java二维数组遍历最常用、最可控的方式是双重for循环,外层控行、内层控列,支持索引获取、原值修改、null处理和提前退出;需判空防护,注意不等长特性,并兼顾性能与可读性。

Java二维数组遍历最常用、最可控的方式就是双重循环——外层控制行,内层控制列。它比增强for更灵活,能获取索引、修改原值、处理null、提前跳出,适合大多数实际开发场景。
双重for循环的标准写法
核心逻辑是:先按行遍历(用 i),再对每一行按列遍历(用 j)。关键要理解 arr.length 是行数,arr[i].length 是第 i 行的列数(允许不等长)。
- 定义二维数组:
int[][] grid = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}}; - 外层循环遍历行:
for (int i = 0; i - 内层循环遍历当前行的每个元素:
for (int j = 0; j - 访问元素:
grid[i][j]—— 这是唯一能精准定位二维坐标的写法
带索引操作的典型实战
当需要记录位置、做行列计算或条件赋值时,普通双重for不可替代。
- 打印带坐标的信息:
System.out.printf("row=%d, col=%d → %d%n", i, j, grid[i][j]); - 将主对角线元素置为0(仅适用于方阵):
if (i == j) grid[i][j] = 0; - 统计某行最大值:
int max = grid[i][0]; for (int j = 1; j max) max = grid[i][j];
安全退出与边界处理
双重循环容易因越界或空指针崩溃,需主动防护。
- 判空再遍历:
if (grid == null) return; - 避免空行异常:
if (grid[i] == null) continue;或if (grid[i] != null)包裹内层循环 - 查找后立即退出两层:
boolean found = false;内层匹配后设为true,外层循环末尾加if (found) break;
性能与可读性平衡建议
小规模数据直接用双重for;大规模或频繁访问时,考虑优化路径。
- 减少重复计算:把
grid.length和grid[i].length提前存入局部变量,尤其在循环体复杂时 - 列优先访问可能更慢:Java中二维数组按行存储,
grid[i][j]比grid[j][i]缓存友好 - 逻辑简单只读场景可换增强for:但一旦要改值、记下标、跳过或反向,就得切回双重for
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











