关键是这句y=x; 
执行这句后,y变成一个局部变量了,跟传进来的b没有关系了

解决方案 »

  1.   

    public static void operate(StringBuffer x, StringBuffer y){
            y=x;//B=A以时,两个都是A
    x.append(y);//A+A=AA
    }
      

  2.   

    stringbuffer 是引用类型的
    产生AA,B的原因要考虑到局部变量和全局变量的区别 如果你在Y=x;这里来句话System.out.println(y);
    你就知道了 打印的y是A ,但是出了这个作用域 就没了
      

  3.   

    public static void operate(StringBuffer x, StringBuffer y){ 
            y=x; 
    x.append(y); 

    这个方法   y=x,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。
    要改变b所指向的对象的值 只能用方法来改变  比如y.append("b"); 
      

  4.   

    public static void operate(StringBuffer x, StringBuffer y){ 
            y=x; 
    x.append(y); 

    这里只是把x的值赋给y了,所以此时y的只也是"A"了,两个"A"加起来就是"AA"了,但y还是指向b的引用,所以b的值是不会变的
      

  5.   

    这个地方你把穿进来的x值赋给Y了...你打印出来的值就是x的值..而不是y的值了
      

  6.   

    http://topic.csdn.net/u/20080509/20/5f9abbb6-cb46-4029-9f3f-bc95c1b165f9.html==============================================这是我以前发的,你看看吧.