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;
}