Java中二维数组本质是“数组的数组”,声明为int[][] matrix,支持不规则结构;通过arri访问元素,行数为arr.length,第i行列数为arr[i].length。
Java中没有真正意义上的“多维数组”,只有数组的数组——即一维数组的每个元素本身又是一个一维数组。最常用的是二维数组,本质是一维

声明时需明确类型、名称和维度(用两对方括号表示二维),但不指定大小:
int[][] matrix; 或等价写法 int[] matrix[];(推荐前者,更清晰)int[][] grid = {{1, 2}, {3, 4, 5}, {6}};int[][] arr = new int[3][]; // 3行,每行暂为空arr[0] = new int[2];arr[1] = new int[4];arr[2] = new int[1];
用两个下标访问元素:arr[row][col],注意索引从0开始,且必须保证行列均在有效范围内。
arr.length
arr[i].length(因每行可不等长,不能直接用arr[0].length代表全部)for (int i = 0; i
for (int j = 0; j
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
for (int[] row : arr) {for (int val : row) {System.out.print(val + " ");}System.out.println();}
初学者易混淆语法和内存模型,导致空指针或越界异常。
new int[][4] 是非法的;必须写成 new int[3][4] 或 new int[3][]
int[][] a = new int[2][]; 后,a[0] 和 a[1] 均为 null,直接访问 a[0][0] 会抛出 NullPointerException
原理相同,只是维度嵌套更深:
double[][][] tensor = new double[2][3][4];
tensor[i][j][k]
tensor.length → 第一维长度,tensor[i].length → 第二维长度,tensor[i][j].length → 第三维长度