JVM基础:深入学习JVM堆与JVM栈( 五 )
Java中的参数传递时传值呢?还是传引用?
要说明这个问题 , 先要明确两点:
1.不要试图与C进行类比 , Java中没有指针的概念
2.程序运行永远都是在JVM栈中进行的 , 因而参数传递时 , 只存在传递基本类型和对象引用的问题 。 不会直接传对象本身 。
明确以上两点后 。 Java在方法调用传递参数时 , 因为没有指针 , 所以它都是进行传值调用(这点可以参考C的传值调用) 。 因此 , 很多书里面都说Java是进行传值调用 , 这点没有问题 , 而且也简化的C中复杂性 。
但是传引用的错觉是如何造成的呢?在运行JVM栈中 , 基本类型和引用的处理是一样的 , 都是传值 , 所以 , 如果是传引用的方法调用 , 也同时可以理解为 “传引用值”的传值调用 , 即引用的处理跟基本类型是完全一样的 。 但是当进入被调用方法时 , 被传递的这个引用的值 , 被程序解释(或者查找)到JVM堆中的对 象 , 这个时候才对应到真正的对象 。 如果此时进行修改 , 修改的是引用对应的对象 , 而不是引用本身 , 即:修改的是JVM堆中的数据 。 所以这个修改是可以保持的 了 。
推荐阅读
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- 手机游戏|LOL手游跳段有先兆!60%胜率是基础,若ID前出现“小代标”,恭喜
- 三国志|日本人对三国的热爱,盘点十部以三国为基础创作的日漫,名字带有“三国志”的就占据半壁江山
- 手机游戏|LOL手游出工会了,怎么创建以及有何意义,让我们深入了解一下
- 泰拉瑞亚|泰拉瑞亚:挖矿的基础操作,地下真的有怪物!
- 太空狼人杀|《太空狼人杀》将登陆索尼和微软的游戏平台,基础售价29.99美元
- 地下城与勇士|2021年的DNF游戏,适合初学者,零基础的新人入坑吗
- steam|Steam测试版本更新,新内容备受关注,带你深入了解
- 交易|GameFi的未来需要更多支点,lemo EMDM打造撬动行业的基础设施!
- 梦幻西游|梦幻西游:梦幻最强召唤兽资质,满成长是基础,攻资能达到1800呢