规则二维数组声明初始化最简写法为int[][] matrix = new int3;,创建3行4列、元素全为0的数组;等价写法需先声明行数再循环初始化每行。

规则二维数组怎么声明和初始化
规则二维数组指每行长度都相同,像一张整齐的表格。最简洁写法是:int[][] matrix = new int[3][4];
这会创建一个3行4列的数组,所有元素自动初始化为0。
等价写法(显式分步):
int[][] matrix = new int[3][];<br>for (int i = 0; i matrix[i] = new int[4];<br>}
静态初始化(适合小规模固定数据):int[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
编译器自动推导为3×3结构,无需写尺寸。
不规则二维数组的正确创建方式
不规则数组(也叫“锯齿数组”)允许每行长度不同,适用于分组、稀疏结构等场景。
必须分两步:
– 先分配外层数组:int[][] jagged = new int[4][];
– 再逐行为子数组分配空间:
jagged[0] = new int[2];<br>jagged[1] = new int[5];<br>jagged[2] = new int[1];<br>jagged[3] = new int[3];
静态写法更直观:int[][] jagged = {{1, 2}, {3, 4, 5, 6, 7}, {8}, {9, 10, 11}};
注意:不能写new int[][] {...}这种冗余形式,大括号本身已隐含new。
常见错误与避坑要点
– 语法错误:写int[3][4] arr或int[][] arr = new int[][4]会直接编译失败。Java不允许在声明或new中省略最外维长度。
– 空指针风险:用new int[5][]后未给某行赋值(如jagged[2]仍为null),后续访问jagged[2].length或jagged[2][0]会抛出NullPointerException。
– 误判长度:不要用matrix[0].length代表所有行列数,尤其在不规则数组中。遍历时必须先判空:if (jagged[i] != null) { for (int j = 0; j
打印与遍历技巧
想清晰查看多维数组内容,别用Arrays.toString()——它只显示内层数组引用地址。
改用:System.out.println(Arrays.deepToString(matrix));
输出类似:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
安全遍历模板:
for (int i = 0; i if (matrix[i] != null) {<br> for (int j = 0; j System.out.print(matrix[i][j] + " ");<br> }<br> System.out.println();<br> }<br>}
增强for循环适合只读场景:
for (int[] row : matrix) {<br> if (row != null) System.out.println(Arrays.toString(row));<br>}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











