Java中没有通过引用传递参数?

我被困在一个简单的数组问题上,需要我的程序员同事的一些指导。

import java.util.*;

public class ArrayExample {
    public static void main(String[] args) {
        double[] array2, array3;
        
        array2 = getArray();
        array3 = getArray();
        
        array2[0] = 99;
        
        System.out.println(Arrays.toString(array2));
        System.out.println(Arrays.toString(array3));
    }
    
    public static double[] getArray() {
        double[] array1 = {1,2,3};
        return array1;
    }
}

Here is the output:
[99.0, 2.0, 3.0]
[1.0, 2.0, 3.0]

我的理解是java对象是通过引用传递的。但是,当我更改 array2 的第一个值时,为什么 array3 的值保持不变?由于 array2 和 array3 都引用同一个数组,在这种情况下,array1,array3 不应该也改变它的第一个值吗?

回答

array2并且array3不要引用相同的数组,因为您通过调用 来初始化它们getArray(),并且每次调用都getArray()返回一个新的数组实例。

为了让他们引用同一个数组,您必须将代码更改为:

array2 = getArray();
array3 = array2;

或更改getArray()为始终返回相同的数组:

private static double[] array1 = {1,2,3};
public static double[] getArray()
{
    return array1;
}


以上是Java中没有通过引用传递参数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>