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

本帖最后由 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如果被创建,就会在内存中分配存储空间,此时判断用typeList!=null去判断是否被实例化,如果被实例化然后再用typeList.size()去判断有无内容,所以是不一样的。

评分

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

查看全部评分

回复 使用道具 举报
可以对比理解
typeList!=null ;和String str;
声明了,但没有实例化
typeList.size()==0
这个是判断typeList引用对象的长度

评分

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

查看全部评分

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