JAVA的传参机制

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

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

如图:
clipboard.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值