关于方法传参问题,形参和实参

java问题

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的内容从未改变