java.util.HashMap h1 = new HashMap();
        java.util.HashMap h2 = h1;
        h1 = null;
        System.out.println("--"+h2==null);
        System.out.println("--"+h1==null);请问结果是什么,最重要的是说出原因,请高人指点

解决方案 »

  1.   

    如果是这样写呢 System.out.println(h2==null);
      

  2.   

    我当然知道结果啊,但我觉得 h2 == null 是 true 
    结果是false ,求个原因嘛
      

  3.   

    引用感觉像是指针一样
    如:
    A a=o;
    理解为:
    a--->oA b=a;
    理解为:
    b--->o(a所指的对象)b=null;
    理解为:
    b--->null那你说a是不是null呢?
      

  4.   

    h1 = new HashMap() 
    h1-------->hashmap.instanceh2=h1
    h2-------->hashmap.instance
    h1-------->hashmap.instanceh1=null
    h1-------->null
    h2-------->hashmap.instance
      

  5.   

    new 分配了空间,名字只是一个引用!!
    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 |
                            |--|
      

  6.   

    java.util.HashMap h2 = h1;
            h1 = null;
    你仔细看看 ~ 你h2里放h1,这时他指的是h1 = new HashMap();
    即h2=h1 = new HashMap();
    System.out.println(h2==null);当然是false;
       h1 = null; 你h1里放什么东西管h2什么事。
      

  7.   

    malligator(不能再整天泡在CSDN里了!) ( ) 信誉:100    Blog  2006-12-11 12:16:40  得分: 0  
     
     
       为什么这么多人对对象、值、引用搞不清楚呢?  
     
    哎~~~~
      

  8.   

    类似于:(实际不一样的)
    i=5;
    j=i;
    i=0;你说j等于多少???
      

  9.   

    h2 = h1;
    是把h2指向h1的引用地址,这个时候,多h1或者h2的任何属性操作会同时引起两个值的变化,但是:
    h1 = null;
    是把h1重新指向null
    也就是说,这个时候的这个语句,是使h1脱离刚才的那个引用了。
    这个时候,h1和h2不一样了,虽然h1是null了,但是h2还是没有被重新指向哪里,所以,h2肯定不是null了
      

  10.   

    哈,一看吓我一跳唉,lz呀lz
    ......