public class StringBugfferTest {
private static void change(StringBuffer str11,StringBuffer str12){
str12=str11;
str11 = new StringBuffer(" new world");
str12.append(" new world");
}
public static void main(String[] args) {
StringBuffer str1 = new StringBuffer("goods");
StringBuffer str2 = new StringBuffer("bad");
change(str1,str2);
System.out.println(str1.toString());
System.out.println(str2.toString());
}
}
首先,main函数中:
str1 = "goods"
str2 = "bad"
然后调用change函数,在change函数中:
str2 = str1 = "good"
str1 = " new world"
str2 = str2 + " new world"
change函数结束,回到main函数
输出str1:" new world"
输出str2:"good new world"
如果对你有帮助,望采纳
下面是我的理解,供参考:
首先 str1在main方法被初始化为 “goods” , str2被初始化为 “bad”;
然后在change方法里,str1的引用被赋给change方法的str12,str12在str1字符串(“goods”)的基础上追加了 “ new world”.(相当于代表main方法里的str1对象)
change方法的参数str11被赋一个新的字符串的引用,而不再是str1的引用。
接着,在main方法打印str1的字符串值,即 “goods new world”
然后str2的字符串值,即“bad” .(str2没有改变)
虽然都说java只有传值,但我觉得传址比较好理解
分析一下change方法:
所以结果为:
goods new world
bad
str1变了,str2 没变