目录
定义格式
//二维数组 array[行坐标][列坐标]
int[][] array1 = {{1,2,3},{4,5,6}};
int[][] array2 = new int[][]{{1,2,3},{4,5,6}};
int[][] array3 = new int[2][3];//默认都是0
二维数组的遍历
//遍历二维数组
int[][] array4 = {{1,2,3},{4,5,6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(array4[i][j]+" ");
}
System.out.println();
}
二维数组的行数和列数
这里我们遇到了一个问题,就是如何确定二维数组的行数和列数。 要想解决这个问题,我们就必须直到二维数组到底是什么。
System.out.println(array4[0]);//[I@1b6d3586
System.out.println(array4[1]);//[I@4554617c
可以看到,输出的是地址,因此我们可以认为, array4[0]和array4[1]分别是一个一维数组,我们可以通过以下代码来验证我们的猜想。
System.out.println(Arrays.toString(array4[0]));//[1, 2, 3]
System.out.println(Arrays.toString(array4[1]));//[4, 5, 6]
System.out.println(array4[0].length);//3
System.out.println(array4[1].length);//3
System.out.println(array4.length);//2
说明array4这个二维数组指向两个一维数组,即:array4.length--行数;一个一维数组存放的元素个数是array4[0].length--列数-----二维数组中的n行元素分别是n个一维数组
这只是一个草图,希望可以帮助你理解二维数组。
现在我们可以重新写二维数组遍历的代码了。
//遍历二维数组
for (int i = 0; i < array4.length; i++) {
for (int j = 0; j < array4[i].length; j++) {
System.out.print(array4[i][j]+" ");
}
System.out.println();
}
对于一维数组,我们可以调用Arrays.toString(数组名)来打印一维数组,同样二维数组也有打印的方法。
//打印二维数组的方法
System.out.println(Arrays.deepToString(array4));//[[1, 2, 3], [4, 5, 6]]
不规则二维数组
下面再给大家介绍一种二维数组的用法。
//不规则的二维数组
int[][] array5 = new int[2][];
array5[0] = new int[]{1,2,3,4};
array5[1] = new int[]{1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.deepToString(array5));//[[1, 2, 3, 4], [1, 2, 3, 4, 5, 6,
//7, 8, 9]]
//第一行长度为4,第二行长度为9
下面我们用for循环来遍历没有赋值的不规则二维数组
int[][] array6 = new int[2][];
for (int i = 0; i < array6.length; i++) {
for (int j = 0; j < array6[i].length; j++) {
System.out.print(array6[i][j]+" ");
}
System.out.println();
}
运行这个代码会出现空指针异常
由此我们可以知道:引用类型没有赋值系统默认为null。