数组长度是创建时固定的元信息,直接通过public final字段.length获取;不可写为length(),否则编译错误;其值用于边界判断以防止越界访问。

Java 数组长度不是“算出来”的,而是创建时就固定下来的元信息,直接通过 .length 字段读取——这是最轻量、最可靠的方式。真正影响业务灵活性的,不是怎么获取长度,而是如何基于这个固定长度,在运行时做合理判断与适配。
length 是字段,不是方法,别加括号
数组的 length 是一个 public final 的 int 类型字段,不是方法。写成 arr.length() 会编译报错。
int[] nums = {1, 2, 3}; System.out.println(nums.length); // ✅ 正确,输出 3System.out.println(nums.length()); // ❌ 编译错误:找不到方法 length()- 字符串用
.length()(带括号),集合用.size()(带括号),唯独数组用.length(不带括号)——三者语义不同,不能混用
用 length 防越界,是安全遍历的前提
数组索引从 0 开始,合法范围是 0 到 arr.length - 1。任何访问都应以 length 为边界依据。
- 传统 for 循环:
for (int i = 0; i - 增强 for 循环虽不显式用 length,但底层仍依赖它判断终止条件
- 若硬编码下标(如
arr[5]),而实际arr.length ,就会触发 <code>ArrayIndexOutOfBoundsException
业务中常见灵活处理场景
数组长度不可变,但业务常需“逻辑长度”或“有效长度”。这时要结合业务规则,用 length 做基础,再叠加判断。
-
空数组或 null 判断:先检查
if (arr == null || arr.length == 0),避免 NPE 或无效处理 -
稀疏数组场景:比如
String[] names = new String[10],只填了前 3 个元素,其余为null。此时names.length是 10,但“有效长度”需遍历统计非 null 元素 -
动态容量模拟:若需扩容,必须新建数组(如
new int[arr.length * 2]),再用System.arraycopy()复制原内容——length是扩容决策的关键输入 -
二维数组分层取长:如
int[][] grid = new int[3][4],grid.length是行数(3),grid[0].length是列数(4);若每行列数不等(不规则数组),则每行都要单独查grid[i].length
length 在算法与校验中的实用价值
很多业务逻辑依赖数组长度做前置校验或路径分支,而非单纯计数。
- 参数校验:如接口接收
int[] scores,要求“至少 3 个成绩”,直接if (scores.length - 计算平均值:总和除以
scores.length,若忽略 length 直接除以常量,会导致结果失真 - 查找极值:遍历范围严格限定在
[0, arr.length),确保不漏不越 - 与集合互转时对齐:转成
List后,list.size()应等于原数组arr.length,这是数据一致性的重要断言点
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











