java for循环索引必须严格对齐arr.length或list.size(),正向遍历终止条件为i
Java for 循环索引越界不能靠捕获异常来解决,必须在访问前把边界逻辑写清楚。核心就一条:所有手动索引操作,都要和
arr.length或list.size()严格对齐,不凭感觉、不硬编码、不省略判断。正向遍历只用
i这是最常写错的地方。合法索引范围是
[0, length),左闭右开,所以终止条件只能是i 。
- ✅ 正确:
for (int i = 0; i- ❌ 错误:
for (int i = 0; i (多此一举,易出错)- ❌ 错误:
for (int i = 0; i (最后一次访问 <code>arr[arr.length],必崩)- ⚠️ 注意:
arr.length可能为 0,循环会自然跳过,无需额外判空,但也不能跳过边界检查本身反向遍历起点必须是
length - 1最大有效下标永远是
arr.length - 1,从arr.length开始就是越界。
Java Development Manual下载Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- ✅ 正确:
for (int i = arr.length - 1; i >= 0; i--)- ❌ 错误:
for (int i = arr.length; i > 0; i--)(第一次就访问arr[arr.length])- ✅ 空数组时该循环自动不执行,行为符合预期
配对或窗口访问要主动缩紧上界
只要涉及
arr[i + 1]、arr[i + 2]或滑动窗口,循环上限就不能再用arr.length。
- 比较相邻元素?用
i- 取三元组
arr[i], arr[i+1], arr[i+2]?用i- 窗口大小为 k?上限是
i ,或更安全地写成 <code>i动态索引每次使用前都得单独校验
循环变量
i合法,不代表i * 2、i / 2、start + offset就安全。
- 每次计算新下标后,立刻加判断:
if (j >= 0 && j- 字符串
split()后的数组长度可能为 0,parts[0]前必须先判parts.length > 0- 取模运算不等于安全:
i % arr.length在i为负时结果仍可能为负,应改用((i % arr.length) + arr.length) % arr.length
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南












