在Java里,理解list!=null、list.size>0和list.isEmpty之间的差异
1、先解释一下
list != null:
这是用来判断list这个对象有没有被实例化,但是List list = new ArrayList()在这里list对象已经被实例化了,所以这里没有对list != null进行判断的必要;
list.size()>0:
这个是用来判断list里是不是有内容,所以咯,在执行list.size()>0之前要确保list已经被实例化。list.size()>0这个方法会先计算一下list里元素的个数,然后再和0进行比较
list.isEmpty():
判断list里是否有元素,list不需要计算元素个数,直接看一下是否为空,所以和list.size()相比,进行非空判断时,这个效率更高
2、list.isEmpty()和list.size()==0的区别:
list.isEmpty()先获取size的值在判断再返回,list.size()则是直接返回属性size的值,相对list.isEmpty()较快。看源码:
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
从源码可以看出list.isEmpty()比list.size()多操作一步查询。
3、list==null和list.isEmpty()的区别:
判断的时候一定要注意先后顺序 ,最先判断是否存在实物,再判断实物中是否存放东西。如果没有瓶子都没有,直接判断有没有水,是会报nullException的 。
(1)有没有瓶子 list == null
(2)瓶子里有没有水 list.isEmpty()
4、比喻:
我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水需要去买个水杯(new ArrayList(),也就是实例化),我就可以直接装水(list.add(水))。你要是没有杯子new ArrayList(),也就是实例化)直接倒水,水就流出去啦(空指针异常)。所以用做判断的时候经常连用list!=null && list.size()!=0或者list!=null && isEmpty()。
5、总结:
- list.size()和list.idEmpty()使用的前提是list已经被实例化,否则会报NullPointer异常
- 如果只是做一个非空判断,用list.isEmpty()比用list.size() != 0效率要高
- list.add(null)会造成list.isEmpty() 为false,但是list.size()为1, 所以代码里要避免list.add(null)的陷阱
参考:
https://blog.****.net/z15732621582/article/details/78703272
下一篇: 团队博客第六天:错对队的日常分享