Java基础学习第六天——二维数组与面向对象入门

文档版本 开发工具 测试平台 工程名字 日期 作者 备注
V1.0 2016.02.25 lutianfei none

二维数组

格式1(动态初始化)

  • 格式:数据类型[][] 变量名 = new 数据类型[m][n];
  • m表示这个二维数组有多少个一维数组
  • n表示每一个一维数组的元素个数
  • 举例:
    • int[][] arr = new int[3][2];
    • 定义了一个二维数组arr
    • 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
    • 每个一维数组有2个元素,可以通过arr[m][n]来获取
  • 注以下格式也可以表示二位数组(不推荐使用)
    • 数据类型 数组名[][] = new 数据类型][m][n];
class Array2Demo{
    public static void main(String[] args){
        int [][] arr = new int[3][2];
        System.out.println(arr);

        System.out.println(arr[0]); //arr的第1个一维数组名称.
        System.out.println(arr[1]); //arr的第2个一维数组名称.
        System.out.println(arr[2]); //arr的第3个一维数组名称.

        System.out.println(arr[0][0]);
        System.out.println(arr[0][1]);

    }
}

格式2(动态初始化)

  • 格式:数据类型[][] 变量名 = new 数据类型[m][];
  • m表示这个二维数组有多少个一维数组
  • 这一次没有直接给出一维数组的元素个数,可以动态的给出。
  • 举例:
    • int[][] arr = new int[3][];
    • arr[0] = new int[2];
    • arr[1] = new int[3]
    • arr[2] = new int[1];

格式3(静态初始化)

  • 格式:数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
  • 简化版格式:
    • 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
    • 举例:
    • int[][] arr = {{1,2,3},{4,6},{6}};

二维数组练习

  • 二维数组遍历

//For循环实现
class Array2Test{
    public static void main(String[] args){
        int[][] arr ={{1,2,3},{4,5,6},{7,8,9}};
        for(int x=0;x<arr.length;x++){
            for(int y=0;y<arr[x].length;y++){
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}

//函数实现
class Array2Test{
    public static void main(String[] args){
        int[][] arr ={{1,2,3},{4,5,6},{7,8,9}};
        printArray2(arr);
    }

    public static void printArray2(int[][] arr){
        for(int x=0;x<arr.length;x++){
            for(int y=0;y<arr[x].length;y++){
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}
  • 二维数组求和

    • 某公司按照季度和月份统计的数据如下:单位(万元)

      • 第一季度:22,66,44
      • 第二季度:77,33,88
      • 第三季度:25,45,65
      • 第四季度:11,66,99
class Array2Test{
    public static void main(String[] args){
        int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
        System.out.println(sum(arr)+"万");
    }

    public static int sum(int[][] arr){
        int sum =0;
        for(int x=0;x<arr.length;x++){
            for(int y=0;y<arr[x].length;y++){
                sum += arr[x][y];
            }
        }
        return sum;
    }
}
  • 打印杨辉三角形(行数可以键盘录入)

    1:杨辉三角形

    1

    1 1

    1 2 1

    1 3 3 1

    1 4 6 4 1

    1 5 10 10 5 1

分析:

A:如果是n行,那么最后一行是n列。

B:每一行的第一列和最后一列的元素是1。

C:规律:

* 每一行的第二列开始数据是:上一行的上一列 + 上一行的同一列

D:把二维数组组成,然后遍历即可。

遍历的时候,注意模仿九九乘法表的遍历。否则会有很多0。

import java.util.Scanner;
class Array2Test{
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);

        int n = sc.nextInt();

        int [][] arr = new int[n][n];
        for(int x=0;x<arr.length;x++){
            arr[x][0] = 1;
            arr[x][x] = 1;
        }

        for(int x=2;x<arr.length;x++){
            for(int y=1;y<=x-1;y++){
                arr[x][y] = arr[x-1][y-1]+arr[x-1][y];
            }
        }

        for(int x=0;x<arr.length;x++){
            for(int y=0;y<=x;y++){
                System.out.print(arr[x][y]+"\t");
            }
            System.out.println();
        }
    }
}
  • 思考题:1:参数传递问题

    • Java中的数值传递问题

      • 基本类型:形式参数的改变对实际参数没有影响。(传递的是参数值
      • 引用类型:形式参数的改变直接影响实际参数。(传递的是地址值
public static void main(String[] args)
{
    int a = 10;
    int b = 20;
    System.out.println("a:"+a+",b:"+b);
    change(a,b);
    System.out.println("a:"+a+",b:"+b);

    int[] arr = {1,2,3,4,5};
    change(arr);
    System.out.println(arr[1]);
}

public static void change(int a,int b)
{
    System.out.println("a:"+a+",b:"+b);
    a = b;
    b = a + b;
    System.out.println("a:"+a+",b:"+b);
}

public static void change(int[] arr)
{
    for(int x=0; x<arr.length; x++)
    {
        if(arr[x]%2==0)
        {
            arr[x]*=2;
        }
    }
}
  • 思考题2

    • 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:

      • 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
      • 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
      • 然后,把加密后的结果在控制台打印出来。
import java.util.Scanner;
class JiaMiDemo{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        System.out.println("Please input a number:");

        int number = sc.nextInt();

        String result = jiaMi(number);
        System.out.println("Jia mi result is:"+result);
    }

    public static String jiaMi(int number){
        int[] arr = new int[8];

        int index = 0;

        while(number>0){
            arr[index] = number % 10;
            index++;
            number /= 10;
        }

        for(int x=0;x<index;x++){
            arr[x] +=5;
            arr[x] %=10;
        }

        int temp = arr[0];
        arr[0] = arr[index-1];
        arr[index-1] = temp;

        String s="";

        for(int x=0;x<index;x++){
            s+=arr[x];
        }

        return s;
    }
}

[========]

第四章 面向对象

  • 本章重点

    • 面向对象思想
    • 类与对象及其使用
    • 对象的内存图
    • 成员变量和局部变量的区别
    • 匿名对象
    • 封装(private)
    • this关键字
    • 构造方法
    • static关键字

面向对象思想

  • 吃饭:

    • 面向过程:去超市买菜->摘菜->洗菜->切菜->炒菜->盛起来->吃
    • 面向对象:上饭店吃饭,你->服务员(点菜)->厨师(做菜)->服务员(端菜)->吃
  • 把大象装进冰箱的分析? (如何分析有哪些类呢?UML,名词提取法。)
    • A:有哪些类呢?

      • 大象
      • 冰箱
      • Demo
    • B:每个类有哪些东西呢?
      • 大象:

        • 进去
      • 冰箱:
        • 开门
        • 关门
      • Demo:
        • main方法
    • C:类与类之间的关系是什么呢?
      • Demo中使用大象和冰箱类的功能。
  • 代码体现:
class 大象 {
public static void in() {
System.out.println("装进大象");
}
}

class 冰箱 {
public static void open() {
System.out.println("打开冰箱门");
}

public static void close() {
System.out.println("关闭冰箱门");
}
}

class Demo {
    public static void main(String[] args) {
        冰箱调用开门
        大象调用进去
        冰箱调用关门
    }
}

如何更符合面向对象思想

  • A:首先分析有哪些类
  • B:接着分析每个类应该有什么
  • C:最后分析类与类的关系

面向对象开发,设计,特征

  • 面向对象开发

    • 就是不断的创建对象,使用对象,指挥对象做事情。
  • 面向对象设计
    • 其实就是在管理维护对象之间的关系
  • 面向对象特征
    • 封装(encapsulation)
    • 继承(inheritance)
    • 多态(polymorphism)
  • 如何表示一个现实世界事物呢?
    • 属性 就是该事物的描述信息
    • 行为 就是该事物能够做什么

  • :是一组相关的属性行为的集合,是一个抽象的概念。
  • 对象:是该类事物的具体表现形式,具体存在的个体
  • 定义类其实就是定义类的成员(成员变量成员方法)
  • Java中用class描述事物也是如此
    • 成员变量 就是事物的属性
    • 成员方法 就是事物的行为
  • 如何使用
    • 创建对象:

      • 类名 对象名 = new 类名();
    • 对象名.成员变量
    • 对象名.成员方法

一个对象的内存图

  • 一个对象的基本初始化过程
class Phone{
    //品牌
    String brand;
    //价格
    int    price;
    //颜色
    String color;

    //打电话的方法
    public void call(String name){
        System.out.println("Call"+name);
    }

    public void sendMessage(){
        System.out.println("Send Message!!!");
    }

    public void playGame(){
        System.out.println("Play Game!!!");
    }
}

class PhoneDemo{
    public static void main(String[] args){
        Phone p =new Phone();

        p.brand = "Nokia";
        p.price = 100;
        p.color = "Yellow";

        p.call("Chenlixiang~~");
        p.sendMessage();
        p.playGame();

        System.out.println(p.brand +"---"+p.price+"---"+p.color);
    }
}

两个对象的内存图

  • 注:方法在方法区中内存地址的共用问题。

三个对象的内存图

  • 注:两个引用指向同一个对象

时间: 2024-11-07 07:52:42

Java基础学习第六天——二维数组与面向对象入门的相关文章

java怎么定义一个二维数组?

java中使用 [][] 来定义二维数组 定义数组时也可同时初始化 下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][5]; //为它分配5行5列的空间大小numthree[0][0]=1.1f; //通过下标索引去访问 1行1列=1.1long[][] numfive=new long[5][]; //定义一个long类型的不规则数组numfive[0]=new long[5]; //为第1行分配5列//定义d

6、JAVA基础-二维数组 及 面向对象理解

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; D:数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): A:二维数组的遍历 B:二维数组的求和 C:杨辉三角形 2:两个思考题(理解) (1)Java中的参数传递

Java_Day06(java 基础下与面向对象,二维数组与面向对象基础)

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 以下格式也可以表示二维数组:不推荐这样去使用 数据类型 数组名[][] = new 数据类型[m][n]; 数据类型[] 数组名[] = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{..

Java打印M图形(二维数组)——(九)

对于平面图形输出集合图形与数字组合的,用二维数组.先在Excel表格中分析一下,找到简单的规律.二维数组的行数为行高,列数为最后一个数大小. 对于减小再增大再减小再增大的,可以用一个boolean标志其是增加还是减小状态,减到最小时将其标志设为相反的并改变这时的初值大小. 效果: Excel中分析 Java代码: 1 package Java_Test; 2 3 public class PrintM { 4 5 /* 6 7 3 7 8 2 4 6 8 9 1 5 9 10 平面图形(二维数组

二维数组和面向对象基础

1:二维数组(理解)(1)元素是一维数组的数组. (2)格式: 数据类型[][] 数组名 = new 数据类型[m][n]; 数据类型[][] 数组名 = new 数据类型[m][]; 数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; 数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): 二维数组的遍历 二维数组的求和 杨辉三角形 杨辉三角: public class Array2Demo { public s

汇编学习:二维数组遍历

作为正式接触汇编的开篇,本文将研究二维数组的遍历问题.在图像处理中,通常需要遍历图像像素(即二维数组).下面给出三个版本的遍历函数,并研究他们的汇编代码(VC2010编译器,x86版,Release模式). (1)在两层循环内每次根据行列索引计算元素位置. (2)为了避免在内存循环内的乘法计算,可在每次外层循环中计算好行起始地址,内层循环每次执行++操作. (3)将外层循环的乘法操作也去掉,在循环外部先计算好数组的起始地址,内层循环每次执行++操作即可. 测试程序实现对图像的反相操作(即B=25

java笔记11之二维数组

格式1: 二维数组:就是元素为一维数组的一个数组 数据类型[][] 数组名 = new 数组类型[m][n] 其中m为行 n为列 注意: A:以下格式也可以表示二维数组            a:数据类型 数组名[][] = new 数据类型[m][n];            b:数据类型[] 数组名[] = new 数据类型[m][n];           B:注意下面定义的区别            int x;            int y;            int x,y;

06_二维数组、面向对象

1:二维数组(理解) (1)元素是一维数组的数组. (2)格式:(四种格式) A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m][]; C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}}; D:数据类型[][] 数组名 = {{...},{...},{...}}; (3)案例(掌握): A:二维数组的遍历 B:二维数组的求和 C:杨辉三角形 Array2Demo.java /*

Java基础学习笔记二十六 JDBC

什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句. JDBC原理 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了.后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是