黑马程序员技术交流社区

标题: 关于StingBuffer作为参数传递的问题 [打印本页]

作者: Hansion    时间: 2015-12-27 20:03
标题: 关于StingBuffer作为参数传递的问题
本帖最后由 Hansion 于 2015-12-28 10:18 编辑
  1. StringBuffer sb1 = new StringBuffer("Hello");
  2.         StringBuffer sb2 = new StringBuffer("World");
  3. sb1 = sb2;
  4.         System.out.print(sb1+"------"+sb2);
复制代码


为什么结果是 Hello------World   而不是 World------World   ?

基本数据类型作为形式参数时,形式参数的改变不影响实际参数。

引用数据类型作为形式参数时,形式参数的改变直接影响实际参数。

求个详细的解答。

作者: black习    时间: 2015-12-27 20:03
楼主,我测试的结果是world-----world,不知你那是什么问题
作者: 崔宁    时间: 2015-12-27 21:23
sb1和sb2存储的是两个对象不是同一个对象
作者: cj286    时间: 2015-12-28 10:04
你这个是两个不同的对象,当然打印各自的内容了啊
引用类型的对象做值传递的时候,形参的改变影响实参
值类型的变量做值传递的时候,形参的改变不影响实参
作者: Hansion    时间: 2015-12-28 10:19
崔宁 发表于 2015-12-27 21:23
sb1和sb2存储的是两个对象不是同一个对象

我之前少写了一句 sb1 = sb2;
作者: Hansion    时间: 2015-12-28 10:21
cj286 发表于 2015-12-28 10:04
你这个是两个不同的对象,当然打印各自的内容了啊
引用类型的对象做值传递的时候,形参的改变影响实参
值类 ...

我之前少写了一句 sb1 = sb2;
作者: 闭关修行小和尚    时间: 2015-12-30 21:12
呵呵呵了,你这是什么意思?
作者: 229390221    时间: 2016-1-7 00:32
执行了sb1=sb2之后,把对象sb2的地址赋到sb1,所以后面两个对象所指向的地址是同一个,因此打印出来的东西是一样的。




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