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

附上测试验证代码:

list=null和list.size=0的区别的更多相关文章

  1. Java:List判空的条件:List=null 和 List.size = 0

    当需要对一个LIst进行判空操作时我们可使用如下两个语句: if (list == null || list.size() == 0) {} if (list != null && l ...

  2. C/C++编程笔记:C语言NULL值和数字 0 值区别及NULL详解

    在学习C语言的时候,我们常常会碰到C语言NULL值和数字 0 ,很多小伙伴搞不清楚他们之间的一个区别,今天我们就了解一下他们之间的区别,一起来看看吧! 先看下面一段代码输出什么: 输出<null ...

  3. empty()和size() == 0有区别吗

    empty()和size() 这里说的empty()和size()都是STL的容器中提供的接口,分别用来判断当前容器是否为空和获取当前包含的元素个数 区别 其实按道理来说两者应该是相等的,而且STL容 ...

  4. 七、Null、空以及0的区别

    一.Null的区别 create database scort use scort create table emp ( empno int primary key, ename ), sal int ...

  5. 数组中array==null和array.length==0的区别

    //代码public class Test1 { public static void main(String[] args) { int[] a1 = new int[0]; int[] a2 = ...

  6. [转载] C++ STL中判断list为空,size()==0和empty()有什么区别

    关于两个的区别,首先size()==0为bool表达式,empty()为函数调用,这一点很明显.查看源代码, bool empty() const { return _M_node->_M_ne ...

  7. 【转载】C/C++杂记:NULL与0的区别、nullptr的来历

    原文:C/C++杂记:NULL与0的区别.nullptr的来历 某些时候,我们需要将指针赋值为空指针,以防止野指针.   有人喜欢使用NULL作为空指针常量使用,例如:int* p = NULL;. ...

  8. 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢?

    没有考虑到具体的问题上面,我们单纯的来讲: 为什么java里面经常作List判断的时候,既要判断list不为null,又要判断size>0呢? list == null 说明list没有初始化( ...

  9. NULL, '\0',0 '0'的区别

    如题,在程序中经常遇到NULL,和'\0',常常疑惑它们是什么关系,其实它们的值是一样的,只不过表现的形式不一样: 1.NULL; NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内 ...

随机推荐

  1. Codeforces 961C Chessboard(将碎了的、染色乱了的棋盘碎片拼一起)

    题目链接:点击打开链接 Magnus decided to play a classic chess game. Though what he saw in his locker shocked hi ...

  2. java中深拷贝浅拷贝简析

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  3. Oracle 12C In-Memory特性研究

    Oracle 12C In-Memory特性研究一.Oracle In-Memory1.1 In-Memory 开启方法1.2 开启与关闭IM column store1.3 inmemory优先级调 ...

  4. ubuntu docker中crontab任务不执行的问题

    problem of task of crontab in docker of ubuntu do not working! 由于各种原因,要在Ubuntu docker上部署crontab任务,如 ...

  5. 内网ICMP隧道构建之icmpsh

    下载地址: https://github.com/inquisb/icmpsh#usage kali下载 git clone https://github.com/inquisb/icmpsh.git ...

  6. Python3(三) 变量与运算符

    一.什么是变量 变量 = [1,2] 二.变量的命名规则 字母,数字,下划线,首字母不能是数字 系统关键字 不能用在变量名中 保留关键字 区别大小写 a=1,   a='1',   a=(1,2),  ...

  7. php面试笔记(3)-php基础知识-运算符

    本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而运算符相关的考 ...

  8. npm安装Vue.js

    我之前是有安装过npm的 使用淘宝 NPM 镜像 $ npm install -g cnpm --registry=https://registry.npm.taobao.org 查看nmp版本 $ ...

  9. 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    电子邮件服务器,对于很多公司,都是需要的. 虽然现在很多人,使用 QQ .微信进行一对一的工作沟通,使用QQ 群.微信群进行多人沟通,但这些即时聊天工具,与电子邮件相比,仍有很多不足: a. 电子邮件 ...

  10. SAP 事务代码 ME31K 报错 - 不含来自带工厂分配的供应商的物料的采购没有被定义 -

    SAP 事务代码 ME31K 报错 - 不含来自带工厂分配的供应商的物料的采购没有被定义 - 近日收到业务团队的报错说,试图创建合同,报错如下: 不含来自带工厂分配的供应商的物料的采购没有被定义 这个 ...