Java--- 关于 数组为null和长度为0的区别
Java--- 关于 数组为null和长度为0的区别
在做LeetCode 的时候,想到一个问题。
数组为null和长度为0,有区别吗?返回 null 会不会导致调用者 空指针异常?
首先来看
int[] n; //只声明了一数组变量;
int[] nil = null; //声明一数组变量,并赋值 null,nil是一个数组类型的空引用,不指向任何对象;
int[] zero = new int[0]; //声明并创建一数组对象,长度是0;
对于上面三条语句,一个比一个做的动作多,系统占用也是后面的多:
- 语句一变量还没初始化,打印 n 会出错:“可能尚未初始化变量 n”;
- 语句二虽已初始化,打印“nil.length”会出现异常:NullPointerException;
- 语句三打印“nil.length”是0,数组内还没有元素。
假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组,则无须null引用检查。鉴于此,返回数组的方法在没有结果时我们通常返回空数组,而不是null,这样做对于函数调用者的处理比较方便。
翻阅《阿里巴巴Java开发手册》,可以看到以下内容:

调用者需要对 null 进行判断,都在会抛出空指针异常。
当然也可以返回值为空的对象,但是需要结合考虑性能问题。
《Effective Java (Third Edition)》书中表示:返回长度为零的数组或者集合,而不是null。
参考博文: https://blog.csdn.net/Rex_WUST/article/details/88763632

浙公网安备 33010602011771号