声明转载自:https://blog.csdn.net/iblade/article/details/50506398/
转载自:https://blog.csdn.net/Hallelujah__/article/details/86688805
大佬告诉我程序的返回值,list.size =0 what ?
List =null 和List.size=0 到底有啥区别?
前提说明:
1、list==null,意味着list压根没有地址,在堆内存压根不存在;
2、list.size()=0,意味着堆内有list,但是还没来得及放元素,其长度随着元素数量变化而变化,暂时为0;
3、list如果为null,则说明list还未初始化。此时list调用任何方法都会出现抛出空指针异常。list.size()==0,则说明list已经被new过了,但是里面没有值;
二者区别:
1、list != null,有没有瓶子(有瓶子);
2、list.isEmpty(),瓶子里有没有水(前提是瓶子已经存在,若直接判断水,则会抛出NullPointerException异常);
3、list.add(null),会造成list.isEmpty() == false,list.size() == 1,因此代码中要注意此处缺陷;
与现实世界做一个形象比喻:
我有一个空的水杯(list),而你没有(null);
我的size是0;
你想要装水去买个水杯(new ArrayList();),而我可以直接装水(list.add(water));
若你没有杯子(list),直接倒水(water),水就会流出来(NullPointerException);
因此判断list时,经常连用list != null && list.size > 0或者list != null && lisy.size != 0。
附上测试验证代码: