A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 CrazyProgram 于 2013-4-29 10:16 编辑

今天看到个判断为if(typeList!=null && typeList.size()==0)这个判断条件不矛盾么?
typeList = new ArrayList<String>();
挺疑惑的

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
并不矛盾啊。而且区别是很大的,typeList!=null 表示这个集合只是声明了还没创建,typeList.size()==0表示这个集合存在了但是里面还没有元素。集合不存在和集合存在但是没有元素是两个不同的概念。而且,如果typeList!=null 的话,别人在调用这个集合的时候,会抛出空指针异常的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
typeList!=null 表示引用指向某个对象,而不是空指针。
typeList.size()==0 表示集合的内容为空。
回复 使用道具 举报
null表示桌上没有杯子,size()=0表示桌上有个杯子,但没盛水,
这是个哲学问题,null判断有或无,如果有,size判断用没用

因为这是容器,所以涉及到有没有和用没用的问题,如果是个简单对象,
就只涉及到有没有的问题

你看,我说这是个哲学问题吧

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
typeList!=null 表示typeList在内存中分配了空间。
typeList.size()==0表示typeList在内存中分配了空间,但数组长度为0.
一个是判断typeList引用的对象是否存在,一个是判断typeList引用的数组对象长度是否为0.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
typeList如果被创建,就会在内存中分配存储空间,此时判断用typeList!=null去判断是否被实例化,如果被实例化然后再用typeList.size()去判断有无内容,所以是不一样的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
吴波 中级黑马 2013-4-28 21:05:09
7#
可以对比理解
typeList!=null ;和String str;
声明了,但没有实例化
typeList.size()==0
这个是判断typeList引用对象的长度

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
都说对对。。学习了!!飘过……
回复 使用道具 举报
嗯嗯嗯,很透彻了,,学到了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马