class Foo{
public static void main(String arg[]){
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;
}
}
public static void main(String arg[]){
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;
}
}
public static void main(String arg[]){
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;//这里y指向了x,并不会把值再传回主函数中,因为java调用是传值的,也就是传值的一个复制,不会影响原来的值.
}
}
任何参数的传递都是对象副本的引用.
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
在x.append(y)中通过append直接改变的对象的本质,将对象a中的内容变为AB,
而y=x没有改变对象的实质.所以依旧不变.
最后的结果应该是AB,B
还是不懂,单步调试一下就ok
你改这个引用,改不了原来的引用
不过你改了引用的对象,对象就变了
x.append(y);是改对象
y=x;是改引用