A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请看下面的参数,运行结果是
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;
}
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马