正向遍历应使用 for (int i = 0; i = 0; i--),索引范围是 0 到 length-1,避免越界或漏元素。

Java 数组遍历本身很简单,但边界条件处理不当容易引发 ArrayIndexOutOfBoundsException 或漏掉元素、重复访问等问题。关键不是“怎么循环”,而是“循环从哪开始、到哪结束、步长是否安全”。
明确数组长度与合法索引范围
Java 数组索引从 0 开始,最大合法索引是 array.length - 1。常见错误是把循环上限写成 (虽正确但冗余),或误用 <code> 导致越界。
- 正向遍历推荐写法:
for (int i = 0; i - 反向遍历推荐写法:
for (int i = arr.length - 1; i >= 0; i--) - 避免硬编码数字(如
i ),始终依赖 <code>arr.length
空数组与 null 的前置校验
空数组(new int[0])长度为 0,不会进入循环,通常安全;但 null 数组直接调用 .length 会抛出 NullPointerException。
- 遍历前先判空:
if (arr == null || arr.length == 0) return; - 若业务允许默认行为,可用 Optional 封装或抛出有意义的异常(如
IllegalArgumentException) - 工具类中建议统一加校验,避免调用方反复处理
增强 for 循环的适用性与限制
增强 for(for (int x : arr))自动避开索引计算,天然规避越界,适合只读或无需下标的场景。
- 优点:简洁、安全、不易出错
- 缺点:无法获取当前索引;不能在遍历时修改数组(如赋值),也不能跳过/回退
- 若需索引,改用传统 for;若需修改元素,用传统 for 或 Stream API 配合索引映射
多维数组遍历中的嵌套边界控制
二维数组每行长度可能不同(不规则数组),不能假设 arr[i].length 恒等于 arr[0].length。
- 外层循环用
i ,内层循环必须用 <code>j - 同样要检查
arr和arr[i]是否为null,尤其动态构造的二维数组 - 示例:
if (arr != null && i 再访问 <code>arr[i].length
边界处理的核心是“信任长度,不猜测索引”,每次访问前确认数据存在、范围有效。不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











