资讯专栏INFORMATION COLUMN

JAVA的传参机制

ygyooo / 1983人阅读

摘要:之前一直感觉和代码之间的转换是分分钟的事情,直到今天刷题剑指时,被引用给虐了。。之前看网上很多博客讲的参数传递分两种,实际上只有一种,即值传递。如图将当做参数传入方法,方法入栈后在栈内存中给形参开辟了一个新的引用指向堆内存。

之前一直感觉C++和JAVA代码之间的转换是分分钟的事情,直到今天刷题《剑指offer》时,被引用给虐了。。才知道C++虽然看起来臃肿,但是对于数据的操作是真的灵活。

之前看网上很多博客讲JAVA的参数传递分两种,实际上只有一种,即值传递。
对于基本数据类型,传递过去的是值的拷贝;而对于类对象、字符串等引用数据类型,传递过去的是地址的拷贝,即创建了一个新的引用,与原引用共同指向对象的内存;之后在函数里对参数进行赋值操作,实际上是开辟了一段新内存,然后让新引用指向这里,不改变原引用的指向。

如图:

将array[0]当做参数传入方法,方法入栈后在栈内存中给形参开辟了一个新的引用指向堆内存。如果执行param = "abc" 那么会在堆中开辟一个内容为abc的部分,然后param指向abc而不会改变array[0]的指向。方法结束后出栈,释放局部变量param,最后“abc”被回收。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70967.html

相关文章

  • 180718-jar包执行传参使用小结

    摘要:包执行时传参的使用姿势虽说我们现在大多不太直接使用包运行方式,目前比较主流的是将自己的服务丢在某个容器中如,等运行,比如我之前所属的电商公司,就是将项目打包为包,丢到容器中运行的在使用时,可能会出现直接打包一个可执行的,然后运行,这种时候, showImg(https://segmentfault.com/img/remote/1460000015684728); jar包执行时传参的...

    red_bricks 评论0 收藏0
  • Java系列】从字节码角度深度理解Java函数调用传参方式

    摘要:下文将从字节码的角度,分析中基本类型传参和对象传参。主函数执行时,操作栈会推入主函数栈帧,其中包含了主函数的局部变量表,字节码,返回值等信息。主函数的栈帧会被推入栈,成为当前操作栈。 个人网站地址: http://kailuncen.me/2017/06/0... 一个小问题 在开源中国看到这样一则问题 https://www.oschina.net/quest...,其中的变量a前...

    LdhAndroid 评论0 收藏0
  • 你们真的了解函数传参嘛?

    摘要:前言函数传参我们天天都在用,但是你们真的了解嘛就当你们很了解了,毕竟是一些基础的东西,我就写几个例子,不喜勿喷。 前言 函数传参我们天天都在用,但是你们真的了解嘛?就当你们很了解了,毕竟是一些基础的东西,我就写几个例子,不喜勿喷。 例子 demo1: var obj = {name: mirok} function demo1(obj) { obj.name = july }...

    李增田 评论0 收藏0
  • 几种常见的Vue组件间传参方式

    摘要:缺点用这种方法写出来的组件十分难维护,因为你并不知道数据的来源是哪里,有悖于单向数据流的原则拿到的是一个数组,你并不能很准确的找到你要找的子组件的位置,尤其是子组件多的时候。 几种常见的Vue组件间的传参方式 Vue父子组件通讯的方法其实有很多,本文只是做一个总结,说说他们的优缺点,具体如何使用相关文档和网上大神已经总结的很多里,这里就不再说明。 1.Vuex 介绍 Vuex 是一个专...

    TalkingData 评论0 收藏0
  • Java在线调试工具

    摘要:在线调试工具你是否突然一天接到电话线上服务怎么回事,有人反应哦,我先看看啊心想去,真的有问题,竟然没打是不是传参传错了看不出来了异常信息也没有这有点难办啊遇到这样的一种情况,如果需要发现问题最快且风险最小的解决方式,你会怎么办远程,不行,对 Java在线调试工具 你是否突然一天接到电话: Qa :线上xx服务怎么回事,有人反应@#¥#@#¥#You :哦,我先看看啊...心想: 去,真...

    Bamboy 评论0 收藏0

发表评论

0条评论

ygyooo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<