y=x; 
这句话有问题只不过让y指向了了x指向的地方,
如果System.out.println(y);应该就是AB而b还是没有改变指向

解决方案 »

  1.   

    我编译过了。输出的结果是:
    AB,B
      

  2.   

    你将System.out.println(x+“,"+y); 
    放在static void operate(StringBuffer x,StringBuffer y)中看看结果,
    就是将
    static void operate(StringBuffer x,StringBuffer y) 

    x.append(y); 
    y=x; 

    该成
    static void operate(StringBuffer x,StringBuffer y) 

    x.append(y); 
    y=x; 
    System.out.println(x+“,"+y); 

    看看是什么结果。
      

  3.   

    hotenM(CMP) 
    您说得果然对,但是我还是不太明白。难道x和y是对象的指针。能不能讲细致一些。谢谢啦
      

  4.   

    study_body
    在operate的函数里y是AB。但是为什么出来就不是了。
      

  5.   

    你可以做个测试
    static void operate(StringBuffer x,StringBuffer y) 

    x.append(y); 
    y=x; 
    System.out.println(x+","+y);
    }
    得到的结果是
    AB,AB
    说明在这里y=x;是有效的
    其实可以这么理解,y=x的有效范围在operate,而且改变的仅仅是y的指向,而真正改变变量内容的操作是append,你也可以用String来试试
      

  6.   

    y=x; 
    关键是这句话之前,y和b都是指向同一个地址的,
    当时y和b在内存中并不是同一个地址
    假设一个是1111,一个2222,他们都指向3333,而3333存你你的结果y=x; 
    之后,
    1111不再指向3333了,而指向了4444,但这并不影响2222任指向3333