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);
}
public static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y=x;
}
}
答案是AB,B
问题是StringBuffer类对象a,b
进行a=b操作后a对象为什么没有改变?是不是方法传递的只是对象的引用,对象的值没有改变?
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;
}
}
答案是AB,B
问题是StringBuffer类对象a,b
进行a=b操作后a对象为什么没有改变?是不是方法传递的只是对象的引用,对象的值没有改变?
除非是引用类型才改变
看看就知道了
而b依然是对象"B"的引用....
a传的是引用没有异议吧,最后结果也是a的引用对象的值
b开始传进去也是引用,但是y这个引用不老实,又找到了新的对象,跟它联系上了(y=x)
所有,就相当于,b的引用传进去了,但是什么也没有做
所有最后的结果还是b的引用对象的值ps.没分的贴子,唉,为了学习