StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a+","+b);
}
public static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y = x;
}
执行结果为什么为AB,B啊! 各位请帮忙解释下啊
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a+","+b);
}
public static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y = x;
}
执行结果为什么为AB,B啊! 各位请帮忙解释下啊
但是b对象本身没改变,b和y不一样的
operate(a, b)执行这个的时候在栈中新建了x,y;
x,a引用相同,x.append(y)也就a.append(b);
而对与y=x;这个只是就换了y的引用并没有改变b,b还是引用原来那个
你可以这样理解在栈中共有4个变量,因该弄清楚了
b的值是B
测试哈就知道
public class Student {public static void main(String[] args) { StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a, b);
System.out.println(a+","+b);
} public static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y = x;
System.out.println(y);
}}