list=null和list.size=0的区别

声明转载自: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。

附上测试验证代码:

原文地址:https://www.cnblogs.com/minmin123/p/12197038.html