java数组长度通过length属性获取,时间复杂度o(1),索引范围为[0, arr.length-1];多维数组中matrix.length为行数,matrix[i].length为第i行列数;空数组length为0;增强for适用于只读操作,不适用需下标或修改元素的场景。

Java 数组长度用 length 属性获取,不是方法,不带括号;循环边界必须严格基于 arr.length 控制,否则极易触发 ArrayIndexOutOfBoundsException。核心原则就一条:索引只在 [0, arr.length - 1] 范围内有效,所有访问前都应确认该范围。
正确获取与理解 length 属性
数组的 length 是一个 public final 字段,直接读取内存元数据,时间复杂度 O(1)。它反映的是数组创建时分配的元素个数,与内容是否为空无关。
- 基本类型和引用类型数组都用
arr.length,例如int[] a = new int[5];→a.length == 5 - 多维数组中,
matrix.length表示行数,matrix[i].length表示第 i 行的列数(每行可不等长) - 空数组
new String[0]的length为 0,循环for (int i = 0; i 自然跳过,安全 -
null数组没有length,直接调用会抛NullPointerException,需前置判空
for 循环边界写法规范
传统 for 循环是最灵活也最易出错的遍历方式,关键在起始、终止、步长三要素的配合。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 正向遍历统一用:
for (int i = 0; i —— 简洁、安全、无歧义 - 避免
i :逻辑等价但冗余,增加理解成本 - 禁止
i 或 <code>i :必然越界 - 反向遍历用:
for (int i = arr.length - 1; i >= 0; i--)—— 终止条件是i >= 0,不是i > 0
增强 for 循环的适用场景与限制
当不需要下标、不修改原数组时,增强 for 是最简最稳的选择,天然规避索引错误。
- 适合:打印、求和、查找匹配值、转字符串等只读操作
- 不适合:需要知道当前位置(如“第几个元素”)、要修改
arr[i]、要跳过某轮或回退迭代 - 注意:不能在循环体内对数组重新赋值(如
arr = new int[10]),也不影响外部引用
边界校验与健壮性设计
生产代码不能依赖“用户不会输错”,而要主动防御非法输入和异常状态。
- 访问单个元素前,务必检查:
if (index >= 0 && index - 方法入参为数组时,优先加空指针和空长度校验:
if (arr == null || arr.length == 0) throw new IllegalArgumentException("数组不能为空"); - 二维数组嵌套遍历时,外层用
i ,内层必须用 <code>j ,且每次访问 <code>arr[i]前确认其非 null - 工具类中建议封装通用校验逻辑,避免每个调用点重复写 if 判断
不复杂但容易忽略。关键是把 length 当作唯一可信依据,拒绝任何硬编码数字或经验猜测。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










