关于java传值还是传引用的一些思考

前令天,公司两个大牛级别的人在讨论java是传值还是传引用,本来我一直觉得是传值的,但是听完他们俩的讨论,我开始

怀疑了,java到底是传值还是传引用。于是认真研究了一下这个问题。

我们都知道,java中的引用和基本变量都存放在栈中,而实际的对象则存放在堆中。例如,int i = 1;那么在栈中便会有一块内

村来保存i的值1,同样,Stydent s = new Student(),程序会在堆中开辟一块内存空间来保存student对象,而在栈中开辟一块

空间来保存s,它的值为student在堆中的地址。当方法调用i时,首先程序会复制一份栈的内容,然后传递给方法,这便是方法的

的形参得到的值,那么对于i,就是传值了,而对于s,只是复制了一份栈的值,而栈的值,实际上是一个引用,指向堆中的对象,于

是分歧点就出来了,说传值的人会说,确实是传值啊,你看,传递的就是栈中的值,而说引用的就会说,栈中保存的,是对象的引

用,怎么就是值呢。我不知道其他人说的分歧点是不是我get到的这个点。我觉得java其实是传递栈的值,而栈的值,是一个引用,

所以,java到底是传值还是引用,我更倾向与传引用。

对于这个问题理解不够深刻,所以先把自己的想法写出来,留着日后慢慢研究,若有写的不对的地方,欢迎指正。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值