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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢明 中级黑马   /  2012-3-17 11:42  /  1920 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在   list   map  set   中   分别可以存入几个null     原因是什么呢

4 个回复

倒序浏览
{:soso_e143:}沉了       - -!
回复 使用道具 举报
Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。

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

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

List:允许重复元素,可以加入任意多个null。
Set:不允许重复元素,最多可以加入一个null。
Map:Map的key最多可以加入一个null,value字段没有限制。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
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;证明
        }
}

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

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

具体使用~~三楼很清晰了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马