public class Test{ 
 public static void main(String[] args){ 
 StringBuffer a=new StringBuffer("A"); 
 StringBuffer b=new StringBuffer("B"); 
 operate(a,b); 
 System.out.println(a+","+b); 
  } 
 public static void operate(StringBuffer x, StringBuffer y){ 
  x.append(y); 
  y=x; 
 } 
 }
答案是AB,B
问题是StringBuffer类对象a,b
进行a=b操作后a对象为什么没有改变?是不是方法传递的只是对象的引用,对象的值没有改变?

解决方案 »

  1.   

    String StringBuffer,StringBuilder都是值类型传递,和基本类型一样.所以不变.
    除非是引用类型才改变
      

  2.   

    jdk上说了的
    看看就知道了
      

  3.   

    最后a,x,y都成为了对象"AB"的引用了...
    而b依然是对象"B"的引用....
      

  4.   

    传值传引用,具体情况具体看(其实,引用也是值)
    a传的是引用没有异议吧,最后结果也是a的引用对象的值
    b开始传进去也是引用,但是y这个引用不老实,又找到了新的对象,跟它联系上了(y=x)
    所有,就相当于,b的引用传进去了,但是什么也没有做
    所有最后的结果还是b的引用对象的值ps.没分的贴子,唉,为了学习