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.结果是怎么产生的呢? 展开
现在有这样一段代码
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.结果是怎么产生的呢? 展开
7个回答
展开全部
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.
至于可以把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.
展开全部
null就是空呗,不指向任何对象的引用,就是个空引用,当然不是object的实例了。
至于你说的把null作为参数,java语言机制规定可以把null作为参数啊,不管你要求的参数是什么类型的。
但是要注意,你传个null过去,再在那边的方法里用到了这个参数,那就会发生和你可怕的事情,空指针异常! NullPointException
至于你说的把null作为参数,java语言机制规定可以把null作为参数啊,不管你要求的参数是什么类型的。
但是要注意,你传个null过去,再在那边的方法里用到了这个参数,那就会发生和你可怕的事情,空指针异常! NullPointException
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
null不是任何对象的实例,但有又是任何类型的引用。
null instanceof Object 返回false,
但是你可以试试System.out.println(null);
集合里增加null就类似于占个位置,但不放东西。比如做地铁,一排座位你可以理解为List,但上面可以坐人,也可以不坐人。不坐就是null
null instanceof Object 返回false,
但是你可以试试System.out.println(null);
集合里增加null就类似于占个位置,但不放东西。比如做地铁,一排座位你可以理解为List,但上面可以坐人,也可以不坐人。不坐就是null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
null 表示空的意思,与“”不同,“”是指一个空字符串,null表示这个对象是空的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回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 结果就是上面这样出来的。
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 结果就是上面这样出来的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询