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
如何解释呀????
y = x; 虽然在方法里y的地址变成了x 但出了函数y还是y,也就是B。而x是改变了x里面的值。
如果你会C就好理解了。 x和y都用值传递,传了指针。
在operate里,
x指针的内容被改了。
y指针的地址改了。出了operate方法后,
x的内容被改了, y由于是值传递又恢复y自己了。