public static void main(String[] args) {

StringBuffer A = new StringBuffer("a");
StringBuffer B = new StringBuffer("b");
oper(A, B);
System.out.println(A);
System.out.println(B);

}

public static void oper(StringBuffer A, StringBuffer B) {
A.append(B);
B = A;
}
请问为什么打印出来A = ab;而B = b?

解决方案 »

  1.   

    这就是传值操作的原因。
    A.append(B);操作后,影响了实参,所一打印的结果是AB.而B = A;不会影响到实参。
      

  2.   

    楼主可以把你程序中出现StringBuffer的地方环成String,结果又不一样了。
      

  3.   

    谢谢楼上的朋友,但是我换成String了之后,还是不行啊 public static void main(String[] args) {

    String A = new String("a");
    String B = new String("b");
    oper(A, B);
    System.out.println(A);
    System.out.println(B);

    }

    public static void oper(String A, String B) {
    A.replace("a", "c");
    B = A;
    }
    我现在是对A进行了操作,但是结果是a , b
    有点蒙...
      

  4.   

    上面的朋友说:
    StringBuffer A
     " A.append(B);操作后,影响了实参,所一打印的结果是AB "那么String A
    A.replace("a", "c");方法就不会影响实参吗?
      

  5.   

    java中没有引用传递,都是按值传递进行的,当传的是一个对象时,其实也是按值传递的,只不过是传递的地址的值而已.看我整理的java参数传递吧.相信会有用.http://blog.csdn.net/yuyu622/archive/2007/09/07/1776626.aspx