引用传递
引用传递
- 当我们传递一个对象(如数组)作为参数时,传递的是对象的引用。函数对对象进行修改会影响原始对象。
- Java 中 对象类型 的传递就是引用传递。
示例代码 - 使用数组
public class ReferencePassingArray {
public static void modifyArray(int[] arr) {
System.out.println("方法内部修改前:arr[0] = " + arr[0]);
arr[0] = 100; // 修改的是引用指向的数组对象的内容
System.out.println("方法内部修改后:arr[0] = " + arr[0]);
}
public static void main(String[] args) {
int[] originalArray = {1, 2, 3};
System.out.println("调用方法前:originalArray[0] = " + originalArray[0]);
modifyArray(originalArray); // 将 originalArray 的引用复制一份传递给 modifyArray 方法
System.out.println("调用方法后:originalArray[0] = " + originalArray[0]);
}
}
输出结果:
调用方法前:originalArray[0] = 1
方法内部修改前:arr[0] = 1
方法内部修改后:arr[0] = 100
调用方法后:originalArray[0] = 100
解释:
- 在
main
方法中,originalArray
引用指向一个包含{1, 2, 3}
的数组对象。 - 当调用
modifyArray(originalArray)
时,originalArray
这个引用(内存地址)被复制一份传递给了modifyArray
方法的参数arr
。 - 现在,
arr
和originalArray
这两个引用都指向同一个数组对象。 - 在
modifyArray
方法内部,通过arr[0] = 100;
修改了引用所指向的数组对象的第一个元素。 - 由于
arr
和originalArray
指向的是同一个对象,所以当modifyArray
方法结束后,main
方法中originalArray
指向的数组的第一个元素也被修改为100
。