在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。
type arrayName[][]; // 数据类型 数组名[][];
type[][] arrayName; // 数据类型[][] 数组名;
其中,type 表示二维数组的类型,arrayName 表示数组名称,第一个中括号表示行,第二个中括号表示列。
例如
int[][] a; String b[][];二维数组的初始化
二维数组可以初始化,和一维数组一样,可以通过 3 种方式来指定元素的初始值。
int[][] a=new int[2][3];// 在定义时初始化
int[][] b={{1,2},{1,2}};// 给定空间,在赋值
int[][] c=new int[2][];// 数组第二维长度为空,可变化
二维数组的遍历
在一维数组中直接使用数组的 length 属性获取数组元素的个数。而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数,所有遍历二维数组时采用两个for循环。
public static void main(String[] args) {
int[][] b = {{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}};
for (int i = 0; i < b.length; i++) {
for (int i1 = 0; i1 < b[i].length; i1++) {
System.out.println(b[i][i1]);
}
}
}
for each 循环语句不能自动处理二维数组的每一个元素。它是按照行, 也就是一维数组处理的。要想访问二维教组 a 的所有元素, 需要使用两个嵌套的循环, 如下所示:
public static void main(String[] args) {
int[][] b = {{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}};
for (int[] ints : b) {
for (int anInt : ints) {
System.out.println(anInt);
}
}
}
提示:要想快速地打印一个二维数组的数据元素列表,可以用
System.out.println(Arrays.deepToString(arrayName));
public static void main(String[] args) {
int[][] b = {{1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}};
System.out.println(Arrays.deepToString(b));
}



