HashMap hm1 = new HashMap();HashMap hm2 = hm1;hm1.put("a",1);System.out.println(hm2);//{a=1}--------------------------------------------------------------
HashMap hm1 = null;HashMap hm2 = hm1;hm1 = new HashMap();hm1.put("a",1);System.out.println(hm2);//null
HashMap hm1 = null;HashMap hm2 = hm1;hm1 = new HashMap();hm1.put("a",1);System.out.println(hm2);//null
前者赋值后hm1没有再赋值,而后者赋值后hm1重新赋值,所以结果不一样
第二个hm1与hm2都指向null,hm1在new hashMap后,hm2没有再指向hm1(null和null是不可比较的吧),
所以第二个hm2为null第一次回答问题,如果回答不正确,希望楼主不要被误导!
第二个 hm1 原来是空,hm2也指向空,但是你给hm1了一个地址,而此时hm2还是指向的空,hm1就指向你给的那个地址,他们两个已经没关系了,所以你对hm1进行了操作,你输出hm2 时就会输出 null了。
hm1--->[对象2]hm1最开始与hm2都指向同一个对象
当new 时表示在堆里新创建了一个对象把hm1指向它
hm2还是指向原来的对象
第二个例子里面你给hm1,重新创建了一次,所以就不在指向原来的对象啦,所以hm1和hm2成了两个不同的对象