请看下面的参数,运行结果是
hello---world
hello---world
hello---world
hello---worldworld
老师的解释是 =并没有改变String的内容,String作为形式参数传递效果和基本类型作为形式参数传递效果一样。
我的疑问是 =后是否改变了地址值?如果改变了地址值,那s2=s1+s2的内容为什么不会受到影响?
或者有没有同学能稍微详细解答一下这四种答案的分析思路?
谢谢
public class StringBufferDemo {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
System.out.println(s1 + "---" + s2);
change(s1,s2);
System.out.println(s1 + "---" + s2);
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println(sb1 + "---" + sb2);
change2(sb1,sb2);
System.out.println(sb1 + "---" + sb2);
}
public static void change2(StringBuffer sb1, StringBuffer sb2) {
sb1 = sb2;
sb2.append(sb1);
}
public static void change(String s1, String s2) {
s1 = s2;
s2 = s1 + s2;
}
}
|
|