java数组长度判断需先防null再查length,否则抛nullpointerexception;空数组与null数组语义不同但常统一视为“无数据”,推荐封装isempty工具方法;多维数组length仅表示第一维大小;动态类型数组须用array.getlength()安全获取长度。

Java 中用数组长度做判断条件,核心就两点:先防 null,再看 length。跳过 null 检查直接调用 .length 会抛 NullPointerException,这是最常见也最容易忽略的坑。
判断数组是否为空(null 或 length == 0)
空数组和 null 数组在语义上不同,但业务中常统一视为“无数据”。必须分两步检查:
- 先用
array == null判定引用是否为空 - 再用
array.length == 0判定非 null 数组是否真没元素 - 二者任一成立,都应视为“空”,推荐封装成工具方法
示例:
public static boolean isEmpty(int[] arr) {
return arr == null || arr.length == 0;
}
用长度做业务阈值判断(如 ≥10、<5)
这类判断必须确保数组不为 null,否则条件表达式本身就会崩溃。不要写 arr.length >= 10 这样的裸调用。
- 安全写法:先校验
if (arr != null && arr.length >= 10) - 若逻辑需提前退出,可结合
Objects.requireNonNull(arr)抛明确异常 - 避免在循环或嵌套条件中重复判 null,提取为变量或方法更清晰
多维数组的 length 使用要点
二维及以上数组的 length 只反映第一维大小,不是总元素数。
-
int[][] mat = {{1,2}, {3,4,5}};→mat.length == 2(行数) - 要获取某一行长度:必须先判该行非 null,再取
mat[i].length - 总元素数需遍历累加,不能仅靠
mat.length * mat[0].length(因每行长度可能不同,且某行可能为 null)
运行时动态类型数组的长度获取
当参数类型是 Object,但实际可能是任意数组(如 String[]、double[]),不能直接用 .length(编译不通过)。
- 用反射:先
value.getClass().isArray()确认类型 - 再调
Array.getLength(value)安全获取长度 - 注意:该方式有反射开销,仅在泛型擦除或框架层必要时使用
示例:
if (value != null && value.getClass().isArray()) {
int len = Array.getLength(value);
System.out.println("数组长度:" + len);
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











