Java 数组-通过引用调用

Java 数组-通过引用调用,java,arrays,Java,Arrays,在java中将数组传递给函数,然后将其分配给新数组时,我得到的是相同的旧数组 public static void main(String[] args) { int[] arr1 = { 1, 2, 3, }; changes(arr1); for (int val : arr1) { System.out.println(val); } } private static void changes

在java中将数组传递给函数,然后将其分配给新数组时,我得到的是相同的旧数组

public static void main(String[] args) {
        int[] arr1 = { 1, 2, 3, };
        changes(arr1);
        for (int val : arr1) {
            System.out.println(val);
        }
    }

private static void changes(int[] arr1) {
    int[] arr2 = { 7, 8, 9 };
    arr1 = arr2;
}

当传递数组处理传递对该数组的引用时,为什么会这样?

因为您在本地修改对arr1的引用,所以无法修改调用方的引用。改变

arr1 = arr2;


再看看:Java是一种传递值语言。对象的值是对该对象的引用。这包括阵列。
System.arraycopy(arr2, 0, arr1, 0, arr2.length);