黑马程序员技术交流社区

标题: String和StringBuffer作为参数传递的问题 [打印本页]

作者: ksh    时间: 2015-9-24 16:18
标题: String和StringBuffer作为参数传递的问题
本帖最后由 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

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

表示看的不太懂

作者: toypaoa    时间: 2015-9-24 19:10
字符串当形参传入方法后,在方法内拼接是不会改变原字符串的,因为这里方法s1和s2其实是一个新的变量指向了s1和s2的值。和方法外的s1、s2没有关系。 而StringBuffer的append方法是在sb2的内存中加入了sb1的值,所以发生了改变




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