Java中二维数组只有length属性而非length()方法;matrix.length表示行数,matrix[i].length表示第i行列数,但需先判空以防NullPointerException。

Java 中二维数组没有 length() 方法,只有 length 属性;length() 是字符串(String)类的方法,不能用于数组。
二维数组的 length 是属性,不是方法
数组在 Java 中是对象,但它的 length 是一个公开的 final 成员变量(不是方法),所以调用时不能加括号。二维数组本质上是一维数组的数组,因此有两层长度:
-
arr.length:表示“外层数组”的长度,即一维子数组的个数; -
arr[i].length:表示第i个子数组的长度(即该行的列数),前提是arr[i]不为null。
例如:
int[][] matrix = {{1, 2}, {3, 4, 5}, {6}};System.out.println(matrix.length); // 输出 3
System.out.println(matrix[0].length); // 输出 2
System.out.println(matrix[1].length); // 输出 3
String 的 length() 是方法,数组不能调用
String 类定义了 length() 这个实例方法,返回字符串中字符的个数。而数组类型(如 int[]、String[][])没有 length() 方法,如果写成 arr.length(),编译器会直接报错:cannot resolve method 'length()'。
常见错误写法(编译失败):
int[][] arr = new int[3][4];System.out.println(arr.length()); // ❌ 编译错误
注意 null 安全:访问前需判空
二维数组的子数组可能为 null,直接调用 arr[i].length 可能触发 NullPointerException。尤其在不规则二维数组或手动赋值场景中:
- 声明但未初始化子数组:
int[][] arr = new int[3][];→arr[0]是null; - 部分子数组被设为
null:arr[1] = null;
安全写法示例:
if (arr != null && iint rowLen = arr[i].length;
}
总结关键点
-
length是数组的属性,只读,不带括号; -
length()是String类的方法,数组不可用; - 二维数组
arr.length是行数,arr[i].length是第i行的列数; - 访问子数组长度前,务必检查
arr和arr[i]是否非空。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











