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;
}
}请写出结果,并说明为什么
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;
}
}请写出结果,并说明为什么
传的都是对象的引用
所以
x(引用)指向对象a
y(引用)指向对象b
x.append(y);相当于a.append(b);
但y=x;实际上只是将引用的指向改变了
也就是说将y引用指向了x(引用)所指的对象a,虽然y的指向变了,但不会影响a和b两个对象的值
http://syniii.atx03.idc800.net/bbs/dispbbs.asp?boardID=5&ID=71&page=1
public static void main(String [] args){
String a =new String("A");
String b =new String("B");
operate(a,b);
System.out.println(a + "," + b);
}public static void operate(String x,String y ){
x=x+y;
y=x;
}
}
同样值传递,如果变为String,结果就不同。为什么
所以所有String参数的改变都是栈空间中的内容的改变
其他内容可参考我在下面的回复
http://syniii.atx03.idc800.net/bbs/dispbbs.asp?boardID=5&ID=71&page=1