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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ksh 于 2015-9-24 16:19 编辑

求分析
--------------------------------------------------------
public class StringStringBuffer {
        public static void main(String[] args) {
               
                String s1 = "hello";
                String s2 = "world";
               
                System.out.println(s1+"---"+s2);//hello---world
                change(s1,s2);
                System.out.println(s1+"---"+s2);//hello---world
               
                System.out.println("-------");
                StringBuffer sb1 = new StringBuffer("hello");
                StringBuffer sb2 = new StringBuffer("world");
               
                System.out.println(sb1+"---"+sb2);//hello---world
                change(sb1,sb2);
                System.out.println(sb1+"---"+sb2);//hello---worldworld
               
        }


        private static void change(String s1, String s2) {
                s1=s2;
                System.out.println(s1+"---"+s2);//world---world
                s2=s1+s2;
                System.out.println(s1+"---"+s2);//world---worldworld
        }
        private static void change(StringBuffer sb1, StringBuffer sb2) {
                sb1= sb2;
                System.out.println(sb1+"---"+sb2);//world---world
                sb2.append(sb1);
                System.out.println(sb1+"---"+sb2);//worldworld---worldworld
               
        }

}---------------------------------------------
hello---world
world---world
world---worldworld
hello---world
-------
hello---world
world---world
worldworld---worldworld
hello---worldworld

---------------------------------------------

表示看的不太懂

1 个回复

倒序浏览
字符串当形参传入方法后,在方法内拼接是不会改变原字符串的,因为这里方法s1和s2其实是一个新的变量指向了s1和s2的值。和方法外的s1、s2没有关系。 而StringBuffer的append方法是在sb2的内存中加入了sb1的值,所以发生了改变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马