哈哈哈123457 2017-12-07 16:11 采纳率: 86%
浏览 837
已采纳

java 关于值传递 引用传递的问题 大神详细解释一下 谢谢

下图 这个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消失了,但是堆内存中的对象数据被改变了。
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?