A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Hansion 中级黑马   /  2015-12-27 20:03  /  3217 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3黑马币
本帖最后由 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   ?

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

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

求个详细的解答。

最佳答案

查看完整内容

楼主,我测试的结果是world-----world,不知你那是什么问题

7 个回复

倒序浏览
楼主,我测试的结果是world-----world,不知你那是什么问题
回复 使用道具 举报
sb1和sb2存储的是两个对象不是同一个对象
回复 使用道具 举报
你这个是两个不同的对象,当然打印各自的内容了啊
引用类型的对象做值传递的时候,形参的改变影响实参
值类型的变量做值传递的时候,形参的改变不影响实参
回复 使用道具 举报
崔宁 发表于 2015-12-27 21:23
sb1和sb2存储的是两个对象不是同一个对象

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

我之前少写了一句 sb1 = sb2;
回复 使用道具 举报
呵呵呵了,你这是什么意思?
回复 使用道具 举报
执行了sb1=sb2之后,把对象sb2的地址赋到sb1,所以后面两个对象所指向的地址是同一个,因此打印出来的东西是一样的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马