谁帮我解释下这个小程序的输出
看下面这段java程序:
====================================
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",为什么不是"AB,AB"或者"A,B"呢?
如果说:在void函数里,不能改变其reference参数指向,只能改变其内容,那下面这段程序又如何解释呢:
====================================
public class Test{
public static void main(String[] args) {
String a = new String("A");
String b = new String("B");
operate(a,b);
System.out.println(a + "," +b);
}
static void operate(String x, String y) {
x.concat(y);
y = x;
}
}
====================================
为什么又输出"A,B"呢?