为什么说java中都是值传递?(不是很懂,大佬来指点指点孩子吧,感谢感谢。)

1.理论原因

在java的一个方法中我们定义一个变量num=10,并通过下面的方法对其进行修改后输出我们能看到输出结果仍然是10,这就是我们所说的值传递。

原因是java在输出时传递的是这些数据值得副本,也就是说在main方法中的modifyPrimitive接受到的是这个num值的副本,下面输出的是原始的值,所以下面对modifyPrimitive中的num进行修改,修改不到原始的main中的值,所以说java中是值传递。

2.举例对比

这里我们用传递对象来做对比,这里我们可以看到通过对modifyPrimitive的修改我们修改成功了,因为java处理对象输出传递时可以理解为传递的是地址,也就是说我们传过去的副本是个地址,他会根据地址去找原来的那个位置的东西,而下面我们把原来的地方的东西修改了那么他找到的就是我们修改完的所以会变,总的来说就是“引用副本和原始引用都指向堆中的同一个对象”,这样我们联想上面java的值传递,遇到数字这种值的时候传递的是副本和原来的一样,所以不受影响,这就是我理解的值传递。

不是很懂,希望大佬指点一二,十分感谢。 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值