Java传参 --- 关于值传递和引用传递

1. 什么是值传递?引用传递?

    值(Value)传递:调用函数时将实际参数复制一份传递到函数中,在使用时函数内部对参数进行调整,不影响实际参数(原始对象);

    引用(Reference)传递:调用函数时将实际参数的地址传递到函数中,在函数内部修改参数时,会影响实际参数(原始对象)。

    在引用传递时,形参与实参共用一个地址,所以当对象信息发生改变时,形参与实参对应的信息都会发生改变,即改变了实际参数的值;而Java中关于引用类型的传递是把对象的引用地址复制一份传给形参,当需要产生一个新对象时,形参(实参)指向新对象的地址,而实参(形参)仍指向原地址,内容保持不变。正确性?

2. Java中关于参数传递的问题

    Java中只有值传递,没有引用传递(或者说是存在一种伪引用传递),对于基本数据类型,是纯粹的值传递,而对于引用类型,是把存放在栈中实际参数的地址(对象的引用)复制一份传给形参(指向同一个地址)。在修改时根据地址找到对象,再进行操作,操作时操作的实际上是这个引用地址对应的对象内容,引用地址本身并没有改变,因此这也是一种值传递。

3. String类的问题

    String由final修饰,在重新赋值时实际是新建一个对象,实参传递给形参时,实际上是新建了一个String对象(另一个地址)赋值给形参,实参仍然拥有原地址的内容,不会改变。

猜你喜欢

转载自blog.csdn.net/qq_30007589/article/details/80869794