黑马程序员技术交流社区
标题:
下面代码运行结果分析
[打印本页]
作者:
kongdun1991
时间:
2016-6-1 22:37
标题:
下面代码运行结果分析
public class Dmeo {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
System.out.println(s1 +"-------" + s2);//hello-----world
change1(s1,s2);
System.out.println(s1 +"-------" + s2);//world-----worldworld
StringBuffer s3 = new StringBuffer("hello");
StringBuffer s4 = new StringBuffer("world");
System.out.println(s3 +"-------" +s4);//
change2(s3,s4);
System.out.println(s3 +"-------" +s4);
}
private static void change2(StringBuffer s3, StringBuffer s4) {
s3 = s4;
s4 = s3.append(s4);
}
private static void change1(String s1, String s2) {
s1 = s2;
s2 = s1 + s2;
}
}
复制代码
解释一下为何运行结果是这样的
作者:
我love
时间:
2016-6-1 23:32
String对象一旦创建就不会改变,而StringBuffer是可以改变的字符串,所以对于change1不管里面怎么变化都不会影响,但是对于change2的话,它的改变就直接影响到了堆内存的StringBuffer对象属性,所以会改变,这是参数传递问题,java只有个值传递,只用对象属性改变了对象才改变
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2