public class Foo {
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;
}
}
Java总是传值调用。对象引用时通过值来传递的。
方法不能修改基本类型的参数。
方法可以修改对象参数的状态。(x.append(y)属于这种情况)
方法不能让对象参数指向新的对象。(y = x属于这种情况)
a指向“A”,b指向“B",调用函数后,x也指向”A"(与a指向同一块地址),y指向“B",x.append(y)后x与
a的指向地址的内容变为”AB“,y=x后,y也指向”AB“,随着operate函数的推出,x,y这两个临时引用型变量
消失,则a指向的内容为”AB“而y指向的内容仍然为"B"