java.util.HashMap h1 = new HashMap();
java.util.HashMap h2 = h1;
h1 = null;
System.out.println("--"+h2==null);
System.out.println("--"+h1==null);请问结果是什么,最重要的是说出原因,请高人指点
java.util.HashMap h2 = h1;
h1 = null;
System.out.println("--"+h2==null);
System.out.println("--"+h1==null);请问结果是什么,最重要的是说出原因,请高人指点
结果是false ,求个原因嘛
如:
A a=o;
理解为:
a--->oA b=a;
理解为:
b--->o(a所指的对象)b=null;
理解为:
b--->null那你说a是不是null呢?
h1-------->hashmap.instanceh2=h1
h2-------->hashmap.instance
h1-------->hashmap.instanceh1=null
h1-------->null
h2-------->hashmap.instance
java.util.HashMap h1 = new HashMap();
h1->|--|
|M |
|--|
java.util.HashMap h2 = h1;
h1->|--|<-h2
|M |
|--|
h1 = null;
java.util.HashMap h2 = h1;
h1->null |--|<-h2
|M |
|--|
h1 = null;
你仔细看看 ~ 你h2里放h1,这时他指的是h1 = new HashMap();
即h2=h1 = new HashMap();
System.out.println(h2==null);当然是false;
h1 = null; 你h1里放什么东西管h2什么事。
为什么这么多人对对象、值、引用搞不清楚呢?
哎~~~~
i=5;
j=i;
i=0;你说j等于多少???
是把h2指向h1的引用地址,这个时候,多h1或者h2的任何属性操作会同时引起两个值的变化,但是:
h1 = null;
是把h1重新指向null
也就是说,这个时候的这个语句,是使h1脱离刚才的那个引用了。
这个时候,h1和h2不一样了,虽然h1是null了,但是h2还是没有被重新指向哪里,所以,h2肯定不是null了
......