public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");//001->x
StringBuffer b = new StringBuffer("B");//002->y->001
operator(a,b);
System.out.println(a+","+b);
}
public static void operator(StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
}
}
为啥最后输出结果为AB,B,而不是AB,AB
记住一句话就可以了:Java中只有值传递。
operator中的变量是临时变量,方法调用完成后就会出栈,他们和传入的a,b引用的是同一个地址的内容,x调用append后修改了a引用的内容,b的内容从未改变