因为operate中没有对b进行操作,所以b没有变化

解决方案 »

  1.   

    首先java中的对象都是引用传参,说白了就是指针 x.append("A");
    y = x;
    y.append("CC");
    这段代码中x的值应该都明白吧
    主要是y,方法体一开始y是b的引用
    y=x的赋值使y引用变成了和x一样,也就是说y也引用了a,下面对y的改变就是对a的改变
    而b的引用在方法体中被y丢了,所以不再改变b了
      

  2.   


    x.append("A");//a->AA
    y = x;//y改引用AA,即y已不引用B(即b的值)
    y.append("CC");//a->AACC
      

  3.   

    StringBuffer是有缓冲的,所以B不会消除,把缓冲清除
      

  4.   

    jFresH_MaN(The answer is ......)(静下心来研究Tiger)和Hodex(小何才露尖尖角) 两位老兄说的有道理。那这样也是说a与x,b与y是两对不同的对象了,只是他们都分别指向同一个对象而已了
      

  5.   

    在java里面可以叫做句柄,类似C++里面的指针,他们只是引用实例对象
      

  6.   

    JAVA中对象在堆中的引用问题经常碰到
      

  7.   

    jFresH_MaN说得很明白,解决了我一个困惑