目录

二维数组的使用

1.理解

2.二维数组的使用

1)二维数组的声明和初始化

 2)如何调用数组的指定位置的元素

 3)如何获取数组的长度

 4)如何遍历数组

5)数组元素的默认初始化值

6)数组的内存解析[根据图片分析]

相关练习

练习一

练习二

练习三


二维数组的使用

1.理解


对于二维数组的理解,可以看成一维数组array1又作为另一个一维数组的array2的元素而存在。 其实,从数组底层的运行机制来看,其实没有多维数组。


2.二维数组的使用

1)二维数组的声明和初始化

//1)二维数组的声明和初始化
        int[] arr = new int[]{1, 2, 3};//一维数组做对比
        //静态初始化
        int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}};
        //动态初始化
        String[][] arr2 = new String[3][2];//外层有3个,3个里面每个里面又有两个【后面可以不写】
        String[][] arr3 = new String[3][];//只指定了行,后面的没有指明。需要赋值之后才能调用

        //也是正确的:放在变量名后或类型后都可以。【注意是二维的】
        int arr4[][] = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
        int[] arr5[] = new int[][]{{1, 2, 3}, {4, 5}, {6, 7, 8}};
        int[][] arr6 = {{1, 2, 3}, {4, 5}, {6, 7, 8}};//这样也是可以的[类型推断]

 2)如何调用数组的指定位置的元素

//2)如何调用数组的指定位置的元素
        System.out.println(arr1[0][1]);//arr1中的第0项的第1个(注意是从0开始的哦)-->2
        System.out.println(arr2[1][1]);//arr1中的第1项的第1个(注意是从0开始的哦)-->由于类型位String,所以输出位null.
        //System.out.println(arr3[1][0]);//运行会报错。【错误类型为空指针(NullPointerException)】
        arr3[1] = new String[4];//先进行赋值
        System.out.println(arr3[1][0]);

 3)如何获取数组的长度

//3)如何获取数组的长度
        System.out.println(arr4.length);//-->3[最外层的]
        System.out.println(arr4[0].length);//-->3[arr4中的第0个]
        System.out.println(arr4[1].length);//-->2[arr4中的第1个]
        System.out.println(arr4[2].length);//-->4[arr4中的第2个]

 4)如何遍历数组

//4)如何遍历数组
        for (int i = 0; i < arr4.length; i++) {
            for (int j = 0; j < arr4[i].length; j++) {
                System.out.print(arr4[i][j]+"  ");
            }
            System.out.println();//换行
        }

5)数组元素的默认初始化值

规定:二维数组分为外层数组元素、内层数组元素

例: int[][] arr = new int[4][3];

外层元素:arr[0],arr[1]...

内层元素:arr[0][0]、arr[0][1]、arr[1][0]...

针对初始化方式一:例如:int[][] arr7 = new int[4][3];

外层元素的初始化值为:地址值

内层元素的初始化值为:与一维数组初始化情况相同

针对初始化方式二:例如:int[][] arr10 = new int[4][];

外层元素的初始化值为:null

内层元素的初始化值为:不能调用,会报错。 

int[][] arr7 = new int[4][3];
        //外层:一个[表示一维,[[表示二维,后面是类型,再后面是@加地址  内层:一维是什么就是什么
        System.out.println("arr7的外层:"+arr7[0]);//是一个地址值[I@1b6d3586;
        System.out.println(arr7[0][0]);//为整型-->0
        System.out.println(arr7);//-->[[I@4554617c

        System.out.println("************");

        float[][] arr8 = new float[4][3];
        System.out.println("arr8的外层:"+arr8[0]);//是一个地址值[F@74a14482;
        System.out.println(arr8[0][0]);//为整型-->0.0
        System.out.println(arr8);//-->[[F@1540e19d

        System.out.println("************");

        String[][] arr9 = new String[4][3];
        System.out.println("arr9的外层:"+arr9[0]);//是一个地址值[Ljava.lang.String;@677327b6;
        System.out.println(arr9[0][0]);//为整型-->null
        System.out.println(arr9);//-->[[Ljava.lang.String;@14ae5a5

        System.out.println("************");

        int[][] arr10 = new int[4][];
        System.out.println(arr10[1]);//-->null(因为后面没有引用,一维为引用类型,所以为null)
        //System.out.println(arr10[1][0]);//或报错空指针,前面没有指针后面就没有

6)数组的内存解析[根据图片分析]

Java二维数组按格式输出_二维数组

 

相关练习

练习一


获取arr数组中的所有元素和。 j=0 j=1 j=2 j=3 i=0 3 5 8 - i=1 12 9 - - i=2 7 0 6 4


public static void main(String[] args) {
        int sum = 0;
        int[][] arr = new int[][]{{3, 5, 8}, {12, 9}, {7, 0, 6, 4}};
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                //System.out.print(arr[i][j] + "  ");//查看输出的表是否正确
                sum += arr[i][j];//计算总和
            }
            //System.out.println();
        }
        System.out.println("arr数组中的所有元素和为:" + sum);
    }

练习二

声明:int[] x,y[];

在给x,y变量赋值以后,以下选项允许通过编译的是:

a) x[0]=y;   b) y[0]=x;    c) y[0][0]=x;    d) x[0][0]=y;     e) y[0][0]=x[0];    f) x=y;

/*
[先确定x,y的类型,再看变量之间的赋值规则。]
声明:int[] x,y[];

x是一个一维数组,y是一个二维数组。
在给x,y变量赋值以后,以下选项允许通过编译的是:
a) x[0]=y;      no//y是二维的,x是int型的一个数。
b) y[0]=x;      yes//x是一维的,y是一维一个元素。
c) y[0][0]=x;       no//x是一维的,y是int型的一个数。
d) x[0][0]=y;       no//x的写法都是错的。
e) y[0][0]=x[0];        yes//两边都是int型的一个数。
f) x=y;     no//y是二维的,x是一维的.
*/

练习三


使用二维数组打印一个10行的杨辉三角。 1.第一行有1个元素,第n行有n个元素。 2.每一行的第一个元素和最后一个元素都是1. 3.从第三行开始,对于非第一个元素和最后一个元素的元素 即,num[i][j]=num[i-1][j-1]+num[i-1][j]; 【0】1 【1】1 1 【2】1 2 1 【3】1 3 3 1 【4】1 4 6 4 1 ...


public static void main(String[] args) {
        //首先声明并初始化二维数组
        int[][] num = new int[10][];
        //【不能在此处定义内层元素,否则出来的值就是一样的了】

        //给数组的元素赋值
        for (int i = 0; i < num.length; i++) {
            num[i] = new int[i + 1];//注意一行不是0而是1,所以加1。

            //给首末元素赋值
            num[i][0] = 1;
            num[i][i] = 1;
            //给非首末元素赋值
            if (i > 1) {
                //注意逻辑,此处要减去最后一项
                for (int j = 1; j < num[i].length - 1; j++) {
                    num[i][j] = num[i - 1][j - 1] + num[i - 1][j];
                }
            }
        }

        //遍历
        for (int i = 0; i < num.length; i++) {
            for (int j = 0; j < num[i].length; j++) {
                System.out.print(num[i][j] + "  ");
            }
            System.out.println();
        }
    }

内容到此结束啦!!!