黑马程序员技术交流社区
标题:
StringBuilder的一点疑问?
[打印本页]
作者:
wangxiaocong
时间:
2015-6-6 14:21
标题:
StringBuilder的一点疑问?
public class StringTest1 {
public static void main(String[] args){
StringBuilder s1 = new StringBuilder("hello");
StringBuilder s2 = new StringBuilder("world");
method_1(s1,s2);
System.out.println(s1+"---"+s2);
}
public static void method_1(StringBuilder s1, StringBuilder s2){
s1.append(s2);
s1 = s2;
System.out.println(s1);
System.out.println(s2);
}
}
复制代码
输出:
world
world
helloworld---world
复制代码
为什么s1已经被s2赋值为world了 在main函数打印的时候还是helloworld??
作者:
半月
时间:
2015-6-6 14:38
方法中的s1 s2和main中的s1 s2不是同一个变量.
一个是形参一个是实参.
s1 = s2;只是改变方法中s1的地址值
main中的都没有改变
你可以用s1.hashCode()输出他们指向的地址值就清楚了
作者:
lwj123
时间:
2015-6-6 14:53
本帖最后由 lwj123 于 2015-6-6 15:44 编辑
StringBuffer在做为方法参数传递时,对于赋值操作只在方法内有效,调用StringBuffer的方法作用的效果是会影响源始值的。
作者:
途中ms前进
时间:
2015-6-6 14:59
地址引用变啦对象没变
作者:
wuyusi
时间:
2015-6-6 20:20
学习了。。。
作者:
黯然残影
时间:
2015-6-6 21:22
字符串传递时值传递,没有改变原来s1
作者:
付欢
时间:
2015-6-6 21:29
我还是看不懂哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2