黑马程序员技术交流社区
标题:
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