Java 数组之二维数组

1、二维数组:数组的每个元素,又是一个数组

2、本质:还是一个一维数组,只不过数组的每个元素,都是另一个一维数组的地址

3、定义格式:

  1、int[][] arr = new int[3][5];创建了一个二维数组,有3个元素,每个元素都是一个一维数组的地址,每个一维数组中,有5个元素,每个元素都是一个int类型的数据,图示:

2、int[][] arr = new int[3][];创建了一个二维数组,有三个元素,每个元素都是一个一维数组的地址,每个一维数组中有多少个元素,不知道,所以一维数组没有办法创建。后期可以随意创建一维数组,给二维数组的元素赋值。

  3、int[][] arr = {{}, {1}, {1,2}, {3,4,5,6,7}, null};相当于定义了一个二维数组,有5个元素,每个元素都是一个一维数组,每个元素的长度、数据都不相同。

 

class Test{
    public static void main(String[] args) {
        int[][] arr = new int[3][5];
        System.out.println(arr);//[[I@15db9742
        System.out.println(arr.length);//3
        System.out.println(arr[0]);//[I@...
        System.out.println(arr[1]);//[I@...
        System.out.println(arr[0].length);//5
        System.out.println(arr[0][0]);//0
        System.out.println("---------------------------");

        int[][] arr2 = new int[3][];
        System.out.println(arr2);//[[I@...
        System.out.println(arr2.length);//3
        System.out.println(arr2[0]);//null
        System.out.println(arr2[1]);
        //System.out.println(arr2[0].length);//空指针异常
        int[] arrOne = {3, 4, 5};
        arr2[0] = arrOne;
        System.out.println(arr2[0] + "..." + arrOne);
        System.out.println(arr2[0].length);//3
        System.out.println(arr2[0][0]);//3

        int[] arrOne2 = {6,7,8,9,11,12,13};
        arr2[1] = arrOne2;
        System.out.println(arr2[1][3]);//9

        System.out.println("------------------------------------");
        int[][] arr3 = {{}, {1}, {1,2}, {3,4,5,6,7}, null};
        System.out.println(arr3);//[[I@....
        System.out.println(arr3.length);//5
        System.out.println(arr3[0]);//[I@...
        System.out.println(arr3[0].length);//0
        //System.out.println(arr3[0][0]);//数组索引越界异常
        System.out.println(arr3[4]);//null
        System.out.println(arr3[4].length);//空指针异常

    }
}
二维数组

 

二维数组的遍历

1、二维数组是:数组嵌套了数组,遍历的时候,使用循环嵌套循环。

2、外层循环中,获取到所有的一维数组,内层循环中,遍历每个一维数组。

class Test2 {
    public static void main(String[] args) {
        int[][] arr = {{}, {1}, {1,2}, {3,4,5,6,7}, null};
        //定义循环,获取所有的一维数组
        for (int i = 0; i < arr.length; i++) {
            if ( arr[i] != null) {//如果一维数组不为null,才遍历
                //定义循环,遍历一维数组arr[i]
                for ( int j = 0; j < arr[i].length; j++) {
                    System.out.print(arr[i][j] + "  ");
                }
                //一维数组的所有元素打印完成之后,加一个换行
                System.out.println();
            } else {//如果一维数组为null,就打印字符串null
                System.out.println("null");
            }
        }
    }
}
二维数组的遍历

 

原文地址:https://www.cnblogs.com/xfdhh/p/11179644.html