Java中的null如何理解?

nullinstanceofObject返回什么值呢?如果为false,说明null应该不是一个Object的实例,那集合里面为何能使用null作为参数,比如说list.... null instanceof Object返回什么值呢?如果为false,说明null应该不是一个Object的实例,那集合里面为何能使用null作为参数,比如说list.add(null)或者list.contains(null)?
现在有这样一段代码
List<Object> testNullList = new ArrayList<Object>();
if (testNullList.contains(null))
System.out.println("List contains null");
else
System.out.println("List doesn't contain null");
如果改为
List<Object> testNullList = new ArrayList<Object>();
testNullList.add(null);
if (testNullList.contains(null))
System.out.println("List contains null");
else
System.out.println("List doesn't contain null");
或者改为
List<Object> testNullList = new ArrayList<Object>();
Object testNull = null;
testNullList.add(testNull);
if (testNullList.contains(null))
System.out.println("List contains null");
else
System.out.println("List doesn't contain null");
问题有
1.结果是怎样?
2.List里面存储的到底是什么东西?我用debug看到的全是null,没什么区别。
3.结果是怎么产生的呢?
展开
 我来答
qzai2000
推荐于2016-03-25 · TA获得超过502个赞
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:222万
展开全部
null,int,float.....等这些用关键字表示的类型,都不属于Object.
至于可以把null作为参数,只是特殊规定而已.
可以这么理解:
对象的引用代表的是一个内存的值,null是一个空引用,可以理解为内存的值为0;按这个意思对代码进行一下转换:
Object obj = new Object();
list.add(obj); ------> list.add(112);//把112看成内存地址.
list.add(null) ------> list.add(0);//null引用的值为0
如果在list.add方法里面没有对参数进行方法或属性的调用,则程序正常运行;否则会报NullPointException.
长师发贴专用号
2008-10-29 · TA获得超过649个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:0
展开全部
null就是空呗,不指向任何对象的引用,就是个空引用,当然不是object的实例了。

至于你说的把null作为参数,java语言机制规定可以把null作为参数啊,不管你要求的参数是什么类型的。

但是要注意,你传个null过去,再在那边的方法里用到了这个参数,那就会发生和你可怕的事情,空指针异常! NullPointException
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wufisher
2008-10-29 · TA获得超过3960个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:629万
展开全部
null不是任何对象的实例,但有又是任何类型的引用。
null instanceof Object 返回false,
但是你可以试试System.out.println(null);

集合里增加null就类似于占个位置,但不放东西。比如做地铁,一排座位你可以理解为List,但上面可以坐人,也可以不坐人。不坐就是null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qinshanwu
2008-10-29 · 超过16用户采纳过TA的回答
知道答主
回答量:145
采纳率:0%
帮助的人:64.7万
展开全部
null 表示空的意思,与“”不同,“”是指一个空字符串,null表示这个对象是空的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
happyzhaow
2008-10-30 · TA获得超过667个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:166万
展开全部
返回false,因为null不是任何类的实例。null就是空的引用。
List 集合里可以用null作为参数,是因为List默认允许加入空值,所以使用list.add(null)才不会有错。
但是如果对于不接受空值的集合传入null做参数就会报空指针异常了,比如HashTable就不接受null作为键或值。
对于你的补充:
1 结果是
List doesn't contain null
List contains null
List contains null
这些你自己测试就可以看到;
2 List 是一个有序的集合,它里面存储的每一个元素都是对象,确切来说是对象的引用(就是存放真正对象所在的内存地址);对象的引用指向的是真正的对象,你直接存入null和你定义一个Object对象赋值为null然后再存入都是一样的,它就代表一个引用位置,而这个位置是空也就是并没有指向什么具体的对象,它的值是null,所以你看到的都是null;
3 结果就是上面这样出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式