java传引用还是传值

2019-03-11  本文已影响0人  淡看江湖等雨

很长一段时间里,我也没有弄清楚到底是传值还是传引用的,而且网上很多博客的说法不一样,还有很多都是错误的,误导人的。

下面运行几个例子,来说明到底是传值,还是传引用。

基本类型:

基本类型

运行结果:

基本类型运行结果

从上面的截图可以看出来,是将变量a的地址传给了change方法的,并且在change方法中,是改变了变量地址。然后外面方法中的变量a的地址并没有变,值也没有变。

对象类型

对象类型

运行结果:

对象类型运行结果

从上面的结果可以看出,基本的表象是和基本类型没有区别的。

只改变对象的属性

对象属性改变

运行结果:

对象属性改变

这次的运行结果和上面两个不一样了。

总结上面的三个例子可以看出来,change方法都是接收到了传递过来的变量的引用。并且在第一和第二个例子中没有改变掉原对象的引用。我们可以这样理解,在调用change方法的时候,是将原变量的引用传递给了change方法的参数,在第一和第二个例子中通过赋值改变了方法参数(可以理解为实参)的引用,但是并没有改变原变量的引用。在第三个例子中,由于改变的只是方法参数(可以理解为实参)的引用对象的属性的引用,同样的没有改变原变量的引用,因此方法参数和原变量所指向的还是同一个对象,当在change方法里面改变对象的属性时,change方法外部是知道的。

如有理解不对的地方,还望读者留言告之。

上一篇 下一篇

猜你喜欢

热点阅读