黑马程序员技术交流社区

标题: 容器类型与null [打印本页]

作者: 谢明    时间: 2012-3-17 11:42
标题: 容器类型与null
在   list   map  set   中   分别可以存入几个null     原因是什么呢
作者: 谢明    时间: 2012-3-17 22:11
{:soso_e143:}沉了       - -!
作者: 叶绍亮    时间: 2012-3-17 22:42
Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。

比如:int a = null;是错误的。Ojbect o = null是正确的。

Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能int a后,不给a指定值,就去打印a的值。这条对对于引用类型变量也是适用的。

List:允许重复元素,可以加入任意多个null。
Set:不允许重复元素,最多可以加入一个null。
Map:Map的key最多可以加入一个null,value字段没有限制。
作者: 魏群    时间: 2012-3-17 23:25
null表示一个空引用。list   map  set   他们都可以有null值,add()方法加入集合的只是对象的引用。
map可以有null的Key与null的Value,但如果有相同的key,后面的值会覆盖之前的值。而Set不能存放相同的值,如果放入的值在Set中已经存在,之前的值会被覆盖,list可以保存重复的值。
证明集合存的是引用
import  java.util.*;
class  Point   
{
        int   x;
        int   y;
}


class  Test   
{
        public   static   void   main(String[]   args)
        {
                Point  p1 = new   Point();
                Point  p2= p1;
                Collection c= new ArrayList();
                c.add(p1);
                p1=null;
                System.out.println(c.contains(p1)); //输出false p1=null了
                System.out.println(c.contains(p2));// 输出true 执行过p2=p1;证明
        }
}

作者: 丁佼    时间: 2012-3-18 00:50
一句话解答就是:null不是一种数据类型,也不是一个对象,而是一个存在于ASCII码表的值,一个特殊的值。
就像void表示一种特殊的函数返回值类型一样(标记着函数无返回值),
null是一个特殊的值,表示空引用,专门用于为一个还没有指向对象的引用赋值,
比如String Str = “abc”;String Str2 =null;
Str是有具体的被引用对象的~~“abc”,而Str2还没有引用任何一个对象~~也就是空引用,但是它不能没有值,于是产生了特殊值null 供其使用,表示它是空的状态。

具体使用~~三楼很清晰了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2