1.判断list是否为空
如果想判断list是否为空,可以这样判断:
//方法1 if (list != null && !list.isEmpty()) { //list不为空 } else { //list为空 } //方法2 if (list != null && list.size() > 0) { //list不为空 } else { //list为空 } //方法3 if (list == null || list.size() == 0) { //list为空 } else { //list不为空 }
2.原理分析
list!=null和list.size()>0的区别:
(1)list==null,意味着list压根没有地址,在堆内就不存在。
(2)list.size()=0 意思堆内有list但是还没来得及放元素,其长度随着元素数量变化而变化,暂时为零。
(3)list如果为null的话,说明没有进行初始化。这时list调用任何的方法都会抛出空异常。list.size()==0说明list已经被new过,但是里面没有值。
(4)区别:
①瓶子存在 list != null
②瓶子里没有水 list.isEmpty()
判断的时候一定要注意先后顺序。如果没有瓶子都没有,直接判断有没有水,是会报java.lang.NullPointerException的
③另外:
list.add(null)会造成list.isEmpty() 为 false, list.size() 为1,所以代码里要避免list.add(null)的陷阱。
④理解:
举个例子,我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你如果想装水就需要买个水杯(new ArrayList();),而我却可以直接装水(list.add(水))。你要是没有杯子直接装水,水就流出去啦(空指针异常)。所以用做判断的时候经常连用 list!=null && list.size()>0
3.双重判断原理
List list=new ArrayList();
①如果是以上这样的话,list不为null 但是size=0,这样集合对于之后的判断是没有意义的, 甚至是报异常,如list.get(0…n)这样取值判断,就会报异常。
②如果先判断size再判断null 如:if(list.size>0&&list !=null){};这种情况如果list 等于null 时,那么list.size会报空指针异常。
所以要双重判断这样写最好if(list !=null && list.size>0){}
原文链接:https://blog.51cto.com/u_/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209225.html原文链接:https://javaforall.net
