Java中数组长度用arr.length字段而非方法,因JVM为数组内置不可变length字段;字符串用length()、集合用size();多维数组arr.length是第一维长度;使用前需判空防NPE。

Java中获取数组长度,直接用 数组名.length 即可,这是数组对象的公共 final 字段,不是方法调用,也不需要括号。
为什么是 length 而不是 length()
因为数组在 Java 中是特殊对象,JVM 为其内置了 length 字段,用于存储创建时确定的元素个数。它不是继承自 Object 的方法,也不是接口定义的,所以不能写成 arr.length()——那样会编译报错。
- 字符串用
str.length()(String 类的方法) - 集合用
list.size()(Collection 接口定义) - 但数组只认
arr.length(JVM 级别字段)
length 字段的本质与限制
length 是编译期已知、运行期不可变的值。数组一旦创建,长度就固定,JVM 在分配内存时已将该值写入数组对象头或专用字段中,读取时几乎无开销。
- 对 null 数组访问 length 会抛出 NullPointerException
- 多维数组如
int[][] arr,arr.length表示第一维长度,arr[0].length才是某一行的列数 - 基本类型数组和引用类型数组都支持 length,机制完全一致
常见误用与检查建议
新手常混淆数组和集合的长度获取方式,也容易忽略 null 安全。实际编码中建议:
立即学习“Java免费学习笔记(深入)”;
- 使用前先判空:
if (arr != null) { int len = arr.length; ... } - 避免在循环条件里重复写
i —— JVM 通常会优化,但语义清晰更重要 - 不要试图修改
arr.length = 5—— 编译不通过,length 是 final 的
基本上就这些。记住:数组长度是字段,不是方法;它快、简单、固定,但也脆弱——null 时立刻翻车。用对了,就是最轻量的边界控制工具。










