Map map11122=new HashMap();
map11122.put("1", "A");
Map map11133=null;
map11133=map11122;
System.out.println("11111---"+map11133.toString());Map map111221=new HashMap();
map111221.put("1", "A");
Map map111331=new HashMap();
map111331=map111221;
System.out.println("22222---"+map111331.toString());

解决方案 »

  1.   

    我是想问题对于
    Map map11122=new HashMap();
    map11122.put("1", "A");
    Map map11133=null;map11133=map11122;
    System.out.println("11111---"+map11133.toString());Map map111221=new HashMap();
    map111221.put("1", "A");
    Map map111331=new HashMap();map111331=map111221;
    System.out.println("22222---"+map111331.toString());
    在红色区域是写法的主要区别但输出结果是一样的,有什么区别?
      

  2.   

    没什么区别,下面的多建了一个对象HashMap
      

  3.   

    逻辑实现上没有任何区别,因为后来你吧
    map11133=map11122;
    map111331=map111221;
    事实上导致两个对象引用都是指向另外的对象,而另外两个对象的数据是一样的
    你用Map map111331=new HashMap();只是新建了一个对象,将引用指向整个对象,但是整个对象从来没被使用,后来的引用指向了其他对象
    Map map111331=null 只是声明,没有新建对象
    后来的引用指向了其他对象
      

  4.   

    map11133 map11122
    二者通过map11133=map11122 指向了同一个对象
    Map map111331=new HashMap(); 创建了一个HashMap()对象
    Map map111331=null 只是声明一个Map对象,并没有具体指向哪个对象
      

  5.   

    Map map111331=new HashMap();
    map111331=map111221;
    -------------------------
    你是说以上的语包是new了一个HashMap,但在执行map111331=map111221时其实又new了一个包含map111221对象数据的HashMap给了map111331,也就是一开始new了对象并未使用
    不知我理解的对不对
      

  6.   

    Map map11122=new HashMap();
    map11122.put("1", "A");
    Map map11133=null;
    map11133=map11122;
    System.out.println("11111---"+map11133.toString());
    -------------------------
    以上的Map map11133=null;
    map11133=map11122;
    语句是不是new了一个包含map11122数据的Map给了map11133还是只是引用了map11122(引用了map11122内存地址)
    ????????????????????????????
      

  7.   

    没有区别,又重新赋值map111331=map111221;
    原来的创建的map111331对象被抛弃了