下图 这个java 关于值传递 引用传递的问题 大神详细解释一下 为什么会是这样 谢谢
7条回答 默认 最新
- 布衣小哥 2017-12-08 01:38关注
s1,s2:他的值是final的 所以是不可以改变的。在方法中又重新创建了String对象,方法里的s1,s2是局部变量。当方法执行完成之后,方法内的s1 s2也就消失了。
sb1,sb2:他底层实际是对char数组进行操作的。通过change方法把sb1和sb2的地址传过来,在change方法中sb1=sb2只是把局部变量sb1的地址改变了,当方法执行完成change中的局部变量sb1也就消失了。
sb2.append(sb1):append返回的是return this,拼接之后的对象还是原对象,虽然change方法执行完成之后局部变量sb2消失了,但是堆内存中的对象数据被改变了。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报