public class Test2 {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
menthod(a, b);
System.out.println(a + "," + b);
}
static void menthod(StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
}
}
为什么输出结果是AB,B啊?
public class QTest_2 {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
StringBuffer b1 =menthod(a, b);//这样应该明白了吧
System.out.println(a + "," + b1);
}
static StringBuffer menthod(StringBuffer x, StringBuffer y) {
y=x.append(y);
return y;
}
}
你这个写的,只是把x.append(y)赋给了形参y,并没有改变实参呀。也就是说,你是写了 y=x,但并没有返回任何值,而第一句x.append(y),确实改变了这个值,但第二个并没有返回任何有效信息
String是不能够修改的,不能通过赋值来改变原先的内容
menthod(a, b)在这一步的是,已经把B添加到A上了,所以这个时候a是AB,b是B。