关于JAVA传参

引用和值的理解

Posted by YD Blog on September 26, 2022

关于JAVA传参~引用和值的理解

什么是引用

引用实际上就是变量的别名,也就是说,它是某个已存在变量的另一个名字,在C中我们可以为一个变量声明多个引用,通过引用来访问变量本身,但是在JAVA中无法进行这种操作。

引用传递和值传递

我们先来看一下值传递和引用传递的定义;

值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;

引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;

简单的说,值传递传入的是变量值的拷贝,传入后就与实际参数无关了;而引用传递传入的是变量的别名,由于引用不是变量,但通过引用可以访问到变量本身,故进行引用传递的方法可以改变实际参数的值。

在JAVA中

在JAVA中不会像C++那样显式的定义一个变量的引用,而是在传参时根据参数本身的数据类型进行判断,若是基础数据类型则为值传递,若是对象类型则传递对象的引用。 不过也有着其他的说法,既Java中其实只有值传递,只不过对于对象参数,值的内容是对象的引用,我认为关于这个问题还是要看JAVA虚拟机的具体实现,但是对我们的日常使用没有太大影响。