HashMap map= null;

HashMap map=new HashMap();
有什么区别.需要注意什么地方

解决方案 »

  1. 请问楼主理解的“声明”是什么?HashMap map;  // 这叫声明HashMap map = null; //这是声明的同时初始化为null// 上面两句如果出现是出现在成员变量的定义中,作用等价,因为成员变量会隐式初始化为nullHashMap map = new HashMap(); // 这句是声明的同时初始化为new HashMap();
      

  2. HashMap   map=   null
    定义了一个HashMap的对象,引用了空的内存空间
    HashMap   map=new   HashMap(); 
    定义了一个HashMap的对象map,同时在堆内存中开辟了一个空间并使map对象引用它
    大概就是这个意思,书面文不太会
      

  3. HashMap map = null; 
    表示声明了一个可以存放HashMap类型的变量map,不过尚未初始化,内存示意如下:+-------+
    |  map  |
    +-------+
    HashMap map = new HashMap();
    这个不仅声明了一个可以存放HashMap类型的变量map,还给它进行了初始化工作,内存示意如下:                  HashMap对象
    +-------+       +------------+
    |  map  | ----> | HashMap属性 |
    +-------+       | 有很多的属性 |
                    +------------+
                    | HashMap方法 |
                    | 有很多的方法 |
                    +------------+
      

  4. 有啥区别??
    1 字数不同,第二个更长
    2 结果不同,第一个不能直接使用,因为是null. 第二个可以直接put和get了!
      

  5. new HashMap()构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 
    而HashMap map = null;只是有了一个HashMap的对象
      

  6. 不同意4楼哦。HashMap map = null;  //这已经初始化了,不过是初始化为null。
    第一副图画的也不准确,map应该是有所指的!和完全没有所指的变量有本质的区别。比较一下下面的变量o和p,就知道区别是本质性的了。
    void f() {
        Object o; //o未被初始化,不能使用
        Object p = null; //p已经初始化了,可以使用
        g(o) //! 编译错误,因为o没有初始化
        g(p) // 无编译错误,但运行时可能会有异常。
    }
    void g(Object o) {
    }
    所以。不初始化一个变量 =/= 将一个变量初始化为null不过,如果是成员变量的声明,则有所不同,因为成员变量是隐式初始化的,也就是说java不允许有未被初始化的成员变量,如果你没有显式初始化一个成员变量,则由编译器来完成,所以下面的代码中o和p的编译结果是一样的,都初始化为null,因为他们是成员变量。
    public class Foo {
      Object o;
      Object p = null;
      

  7. 声明的话,可以在下面任一地方使用,保证下面用的话,是这个对像,也就是一个对象的意思。
    而,new 的话,不有这种效果,。
      

  8. 谢谢Dan1980的指正图是画错了,这个图表示的是:HashMap map; 的语义(这个是没有初始化)。并不是表示HashMap map = null; 的语义(这个已经初始化了),指向了一个null,呵呵~~表要拿砖拍我哦~~
      

  9. 问一下啊HashMap到底怎么用啊
    我一直搞不清楚
    汗~~~~
      

类似问题 »