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;
}
}请写出结果,并说明为什么

解决方案 »

  1.   

    AB,B
    传的都是对象的引用
    所以
    x(引用)指向对象a
    y(引用)指向对象b
    x.append(y);相当于a.append(b);
    但y=x;实际上只是将引用的指向改变了
    也就是说将y引用指向了x(引用)所指的对象a,虽然y的指向变了,但不会影响a和b两个对象的值
      

  2.   

    感觉Java的实质还是指针,除了基本数据类型其他的运算都是基于指针的.....只不过限制了许多功能。
      

  3.   

    还是我的回答有点深度吧?
    http://syniii.atx03.idc800.net/bbs/dispbbs.asp?boardID=5&ID=71&page=1
      

  4.   

    public class Test {
    public  static  void  main(String [] args){
      String a =new String("A");
      String b =new String("B");
      operate(a,b);
      System.out.println(a + "," + b);
    }public static void operate(String x,String y  ){
      x=x+y;
      y=x;
    }
    }
    同样值传递,如果变为String,结果就不同。为什么
      

  5.   

    String 的变量值改变实质上它变指向了一个新String实例
    所以所有String参数的改变都是栈空间中的内容的改变
    其他内容可参考我在下面的回复
    http://syniii.atx03.idc800.net/bbs/dispbbs.asp?boardID=5&ID=71&page=1