Java中这个地方为什么输出false?没有给list添加元素,不是应该就是null吗?
怪我咯
怪我咯 2017-04-18 10:02:40
[Java讨论组]
List<String> list = new ArrayList<String>();
        System.out.println(list==null);
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
伊谢尔伦

虽然中文都是空,但是英文有 null 和 empty 的区别

List<String> list = new ArrayList<String>();

使用了 new 运算符搞出来的东西一定不会是 null,因为这里已经产生了一个对象。

但是由于没有加入元素,它是 empty 的,所以 list.size() == 0

PHP中文网
  • null是没有初始化,如List<String> list = null;

  • 初始化而没有值,如List<String> list = new ArrayList<String>();

源码如下:

public boolean isEmpty() {
    return size == 0;
}
  • 常用Apache中的工具类来判断:StringUtils.isEmpty(); StringUtils.isBlank();

大家讲道理
List<String> list = null;
System.out.println(list == null);

list = new ArrayList<String>();
System.out.println(list == null);
System.out.println(list.isEmpty()); // 没有元素

自己看看2者的不同。

PHP中文网

这么说吧,new出来的对象就等于给了你个篮子(称为地址),null是针对地址的,有了篮子就不是null。你这个篮子没装东西(没赋值)是指它装载的东西为空(list.size()==0),但是篮子还是在的,物理上讲是已经分配了地址。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号