public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
passValue(a,b);
System.out.println(a.toString()+" - "+b.toString());
}
public static void passValue(StringBuffer x,StringBuffer y){
x.append(y);
y = x;
}
問題是輸出什麼?
x的地址值和a相等。y的地址值和b相等,
x.append(y); 是使用a的地址值指向的StringBuffer對象添加y(b);
這樣一來的話就是 a = x = AB了。
然後(重點來了):
y = x;
這句是重新給y賦予x(a)的地址值,拋棄了原來b的地址值。
這樣一來 y = x = a = “AB”的地址值;
那麼b還是沒變,還是指向“B”的地址值。
那麼輸出就應該是 AB - B
做個記號。