java数组长度通过arr.length字段获取,不可加括号;它是jvm内置的public final字段,编译期确定、运行时只读;多维数组length仅表示第一维长度,需判空防npe,且不可修改。

Java 数组长度用 arr.length 获取,不是方法调用,也不加括号——这是最核心的规则。
length 是字段,不是方法
数组的 length 是 JVM 内置的公共 final 字段,编译期确定、运行时只读。写成 arr.length() 会直接编译失败,提示 “Cannot resolve method 'length()'”。这和字符串的 str.length()、集合的 list.size() 本质不同,不能混用。
- 正确写法:
int len = arr.length; - 错误写法:
int len = arr.length();或int len = arr.size(); - 字符串和集合有各自约定:
"abc".length()、new ArrayList().size()
多维数组的 length 只反映第一维
对于 int[][] matrix,matrix.length 返回的是“有多少行”,不是总元素数,也不是每行的列数。每行长度可能不一致,必须单独访问 matrix[i].length,且要确保 matrix[i] 不为 null。
-
int[][] m = {{1,2}, {3,4,5}};→m.length == 2,m[0].length == 2,m[1].length == 3 - 遍历二维数组时,外层用
i ,内层用 <code>j - 避免假设
matrix.length == matrix[0].length,不规则数组下极易出错
使用前务必判空
对 null 数组访问 length 会立即抛出 NullPointerException。数组没有 isEmpty() 这类封装方法,空检查只能靠手动判断。
- 安全写法:
if (arr != null && arr.length > 0) { ... } - 危险写法:
if (arr.length > 0) { ... }(arr 为 null 时崩溃) - 尤其在方法参数、返回值或 JSON 解析结果中,null 很常见,不可跳过
长度固定,不可修改
数组创建后,length 就锁定不变。试图赋值(如 arr.length = 10)会编译报错:“Cannot assign a value to final variable 'length'”。需要扩容时,只能新建数组并复制内容,例如用 Arrays.copyOf() 或 System.arraycopy()。
-
int[] old = {1, 2};→int[] newOne = Arrays.copyOf(old, 5); - 不要为了性能缓存
arr.length,JVM 会优化读取,零开销 - 即使数组元素全设为
null或0,length值仍保持初始大小
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











