首先,在JAVA中,二维数组是一种数组的数组。它可以看作是一个矩阵,通常是由于表示二维数据节后,如表格和网格。
1.声明和初始化二维数组
声明
int[][] arr;
初始化
int[][] arr=new int[3][4];
或者用花括号嵌套
int[][] arr={{1,2,3},{4,5,6}};
2.访问二维数组的元素
要访问或修改二维数组中的元素,可以使用数组下标:
int value=arr[1][2];
3.动态初始化二维数组
int[][] arr=new int[3][];
arr[0]=new int[2];//第一行有2列
arr[1]=new int[4]; //第二行有4列
arr[2]=new int[3];//第三行有3列
4.内存布局
在Java中,数组是对象,二维数组是包含数组引用的数组。每个子数组都是有独立的对象,存储在堆内存中。这意味着各子数组可以有不同的长度,并且改变一个子数组不会影响到其他子数组。
上面已经说了数组是对象,并且它是一个特殊的一维数组,那么arr在一维数组中就是数组对象的引用,又因为二维数组是一个特殊的一维数组,那么拆分一下,是不是每一行arr[i]都是一维数组。则arr[0]就是第一行对象的引用,arr[1]就是第二行对象的引用。如下图所示:
public class demo5 {
public static void main(String[] args) {
int[][] arr={{1,2,3},{4,5,6}};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
运行结果:
从上述运行结果我们不难看出,arr[i]就是一个对象的引用(即一个一维数组)
5.遍历二维数组
fori循环遍历
public static void main(String[] args) {
int[][] arr={{1,2,3},{4,5,6}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}
运行结果:
foreach循环遍历
for (int[] tmpArray:arr) {
for (int x:tmpArray) {
System.out.print(x);
}
System.out.println();
}
运行结果:
deeptoString打印所有元素
String ret= Arrays.deepToString(arr);
System.out.println(ret);
运行结果: