Java到底有没有引用传递?

转自:https://blog.csdn.net/qq598535550/article/details/52967164

最近在忙面试,在某次技术电话面试中,面试官让我说说“Java中值传递和引用传递的区别?”我当时觉得这个题目比较基础,应该是没有问题的,我也按照平时所学所理解的告诉面试官。事后我认真回想了一下,觉得这个问题一定不简单,于是在网上翻了一通,各有各的说法。在我看来,其实他们说的都是一个东西,只是从不同角度切入罢了。

以下是我一直以来的观点。
1、“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递
2、在Java里面只有基本类型和String,其它的都是按引用传递
摘自:http://blog.csdn.net/zzp_403184692/article/details/8184751(有改)

直到看到知乎这个回答,才发现这种观点不重要,这种争论也显得没有意义了。

首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。
更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。
这就好像用大学的名词来解释高中的题目,对于初学者根本没有任何意义。

如果还没搞懂传值和传引用的准确含义请看下面的链接
知乎回答:https://www.zhihu.com/question/31203609/answer/50992895

所以我这里并不想为“Java到底有没有引用传递?”这个问题下定论,你说有就有,你说没有就没有!!

猜你喜欢

转载自blog.csdn.net/qq_32534441/article/details/88362875