防止数组下标越界需严格对齐索引范围[0, length),正向遍历用i < arr.length,反向遍历从arr.length-1开始,配对访问上限为arr.length-1,动态索引须单独校验边界。

防止数组下标越界,关键在于让循环边界与数组真实长度严格对齐,而不是凭经验或粗略估算。Java 数组合法索引是 [0, length) 这个左闭右开区间,任何偏离都会埋下隐患。
正向遍历必须用 i < arr.length
这是最常见也最容易写错的地方。不要用 i <= arr.length - 1 或 i <= arr.length,前者多此一举,后者直接越界。
- 正确写法:
for (int i = 0; i < arr.length; i++) - 错误示例:
for (int i = 0; i <= arr.length; i++)→ 最后一次访问arr[arr.length],必崩 - 即使数组非空,
arr.length也可能为 0,所以不能跳过边界判断
反向遍历起点必须是 arr.length - 1
从末尾开始时,起始值错了就全盘皆错。别从 arr.length 开始,那已经超了最大有效下标。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 正确写法:
for (int i = arr.length - 1; i >= 0; i--) - 错误示例:
for (int i = arr.length; i > 0; i--)→ 第一次就访问arr[arr.length] - 若数组为空(
length == 0),这个循环会直接跳过,符合预期
配对访问要主动缩紧上限
当操作涉及相邻元素(如 arr[i] 和 arr[i + 1])、前后比较或窗口滑动时,循环上界不能再用 arr.length。
立即学习“Java免费学习笔记(深入)”;
- 正确写法:
for (int i = 0; i < arr.length - 1; i++) - 这样保证
i + 1始终 ≤arr.length - 1 - 同理,三元组访问(
arr[i], arr[i+1], arr[i+2])上限应为arr.length - 2
动态计算的索引必须单独校验
循环变量本身合法,不代表你用它算出的新下标就安全。比如 i / 2、i * 2、start + offset 都可能越界。
- 每次用前加判断:
if (j >= 0 && j < arr.length) { ... } - 尤其注意字符串
split()后的数组:可能长度为 0,parts[0]直接抛异常 - 取模运算不等于安全:
i % arr.length在i为负时结果仍可能为负,应改用((i % arr.length) + arr.length) % arr.length

















