1.理论原因
在java的一个方法中我们定义一个变量num=10,并通过下面的方法对其进行修改后输出我们能看到输出结果仍然是10,这就是我们所说的值传递。
原因是java在输出时传递的是这些数据值得副本,也就是说在main方法中的modifyPrimitive接受到的是这个num值的副本,下面输出的是原始的值,所以下面对modifyPrimitive中的num进行修改,修改不到原始的main中的值,所以说java中是值传递。
2.举例对比
这里我们用传递对象来做对比,这里我们可以看到通过对modifyPrimitive的修改我们修改成功了,因为java处理对象输出传递时可以理解为传递的是地址,也就是说我们传过去的副本是个地址,他会根据地址去找原来的那个位置的东西,而下面我们把原来的地方的东西修改了那么他找到的就是我们修改完的所以会变,总的来说就是“引用副本和原始引用都指向堆中的同一个对象”,这样我们联想上面java的值传递,遇到数字这种值的时候传递的是副本和原来的一样,所以不受影响,这就是我理解的值传递。
不是很懂,希望大佬指点一二,十分感谢。