黑马程序员技术交流社区

标题: 请教一下StringBuffer和String的拼接赋值问题 [打印本页]

作者: 落星追恒    时间: 2016-3-17 15:58
标题: 请教一下StringBuffer和String的拼接赋值问题
请看下面的参数,运行结果是
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;
}
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2