Java---关于数组为null和长度为0的区别
Java--- 关于数组为null和长度为0的区别
在做LeetCode 的时候,想到⼀个问题。
令数组全部的值为0数组为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。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论