以下是我个人的一点看法,有不对的欢迎各位指出来。
在Java中,值传递,是创建一个副本,副本中拷贝了这个变量的值,在调用函数中改变的是这个副本的值,与原变量的数值无关。
引用传递,是创建一个副本,副本中拷贝了这个对象的地址,在调用函数中改变的是该副本所指向的地址。
基本类型变量传递:
输出结果:
可以看到,num变量在传递进foo函数后,num的值已经传递进来了,但是foo函数修改了这个值,原变量却没有改变。
为什么呢?
如果是同一个变量,修改了一个的值另一个也会发生变化。所以foo()中的num和main()中的num不是同一个变量,只是它们的值都一样,foo()中把原变量的值拷贝了一份,在函数中修改的是拷贝后的副本,所以原变量的值没有发生改变。
对象的传递:
同上,在函数中创建了一个副本保存该地址,如果是String类型的传入,原变量String a1 = "123" , 把a1进行传递,
函数中 a1 = new String("aaa"); 改变的只是a1副本的指向,对原变量没有影响。
原文:https://www.cnblogs.com/linyaoguo/p/12057726.html