引用数据类型传参,为何可以影响原有数据?

引用数据类型传参,为何可以影响原有数据?

基本数据类型传参,是值传递;引用数据类型传参,是对象传递,会改变对象的内容,但还是不太懂,为何会发生改变?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2022-01-17 09:52:30

    同学你好,为了帮助同学更简单的理解,老师做举个例子:

    在Java中,对象存储时使用的是一整块空间,我们可以理解为是一个盒子。而每一次使用new关键字创建数组或者对象时,都会制造一个新的盒子。

    当对象作为参数进行传递时,本质上是在传递盒子,而不关心盒子中的东西。加入A和B两个人对这个盒子进行传递,A将盒子给了B,B将盒子中的东西取走了一件,再将盒子传回了A。由于盒子还是那个盒子,也就是对象本身没有改变,但是盒子中的东西少了一件,也就是对象中的数据发生了改变。

    如果同学依然有疑问,欢迎继续提问。

    祝学习愉快~


  • 提问者 飘仙云逸 #1

    为何数组传递的是整个对象,而基本数据类型传递的只是值?

    2022-01-17 21:41:10
  • 好帮手慕小蓝 回复 提问者 飘仙云逸 #2

    同学你好,基本数据类型和引用数据类型在内存中的存储状态是不同的。

    基本数据类型只存储数值,所以其内存占用较低,使用时也是直接对数值进行操作。

    引用数据类型存储时需要存储大量其他信息,例如对象的对象头信息,对象中的成员属性信息、成员方法等,使用时操作的是这一整块空间而不是其中的内容。

    祝学习愉快~


    2022-01-18 09:52:28
  • 提问者 飘仙云逸 回复 好帮手慕小蓝 #3

    好的,谢谢

    2022-01-18 22:09:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师