java二维数组初始化有静态初始化、动态指定行列、先定行数后配列长三种方式,遍历推荐传统for循环和增强for循环,均需判空防nullpointerexception。

Java 中多维数组初始化和遍历的核心在于理解“数组的数组”结构,尤其以二维数组最常用。初始化方式决定后续能否直接访问元素,遍历方式则需匹配数组是否规则(每行长度一致)或不规则(各行长度不同)。
二维数组的三种初始化方式
实际开发中主要用这三类,按使用频率和灵活性排序:
-
静态初始化(最直观):编译期确定全部元素,适合数据固定、量小的场景。
例如:int[][] arr = {{1, 2, 3}, {4, 5}, {6}};→ 第0行3列、第1行2列、第2行1列,天然支持不规则结构。 -
动态指定行列(最常用):只声明尺寸,元素自动设默认值(int为0,String为null)。
例如:int[][] arr = new int[3][4];→ 创建3行4列的规则二维数组,所有元素初始为0。 -
先定行数、后配列长(最灵活):适用于每行数据量不确定的业务,比如学生成绩表中每人科目数不同。
例如:int[][] arr = new int[3][];,再分别赋值:arr[0] = new int[2]; arr[1] = new int[5]; arr[2] = new int[1];
遍历二维数组的两种可靠写法
无论规则还是不规则数组,以下两种方式都安全有效,关键区别在于是否需要下标:
-
传统 for 循环(推荐带索引操作时用):
外层控制行(i ),内层控制列(<code>j ),天然适配不规则结构。<br>示例:<br><code>for (int i = 0; i <br><code> for (int j = 0; j <br><code> System.out.print(arr[i][j] + " ");}System.out.println();} -
增强 for 循环(简洁、不易越界):
外层遍历得到每一行(类型是int[]),内层再遍历该行每个元素。
示例:for (int[] row : arr) {for (int val : row) {System.out.print(val + " ");}System.out.println();}
⚠️ 注意:若数组本身为null,会抛出 NullPointerException,使用前建议判空。
三维及以上数组的初始化与遍历逻辑
原理相同,只是嵌套层级增加,需多一层循环:
- 声明:
int[][][] cube = new int[2][3][4];→ 2个“面”,每面3行4列。 - 初始化(动态):
cube[i][j][k] = i * 12 + j * 4 + k;(合理构造值) - 遍历:三层嵌套 for,依次用
cube.length、cube[i].length、cube[i][j].length控制边界。
输出格式优化小技巧
打印时让结果更清晰,可配合 System.out.printf 或简单拼接:
- 对齐数字:
System.out.printf("%-4d", arr[i][j]);(左对齐占4位) - 标记行列:
System.out.print("[" + i + "][" + j + "]=" + arr[i][j] + " "); - 空行分隔块:
if (i > 0) System.out.println();(在每行数据后换行)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











