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"); } } } }