- Java code
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); } static void operate(StringBuffer x, StringBuffer y) { x.append(y); y = x; }}
请问为什么输出 AB,B 呢。。求详解。。
------解决方案--------------------
operate(a, b);
static void operate(StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
}
中x跟a指向同一个StringBuffer,y和b是指向同一个StringBuffer,y=x,只是将y的指向变为x和a指向的StringBuffer,并没有改变b的指向。