引用传递

引用传递

  • 当我们传递一个对象(如数组)作为参数时,传递的是对象的引用。函数对对象进行修改会影响原始对象。
  • 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
  • 现在,arroriginalArray 这两个引用都指向同一个数组对象。
  • modifyArray 方法内部,通过 arr[0] = 100; 修改了引用所指向的数组对象的第一个元素。
  • 由于 arroriginalArray 指向的是同一个对象,所以当 modifyArray 方法结束后,main 方法中 originalArray 指向的数组的第一个元素也被修改为 100

关联文章


文章作者: huan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 huan !
  目录