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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24334403/article/details/79123444

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

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

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

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

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

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

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

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

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

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








猜你喜欢

转载自blog.csdn.net/qq_24334403/article/details/79123444