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
做个记号。