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

k4emjkb1  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(354)

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

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不也应该更改它的第一个值吗?

xam8gpfp

xam8gpfp1#

array2 以及 array3 不要引用同一个数组,因为通过调用 getArray() ,以及每次呼叫 getArray() 返回一个新的数组示例。
为了使它们引用相同的数组,您必须将代码更改为:

array2 = getArray();
array3 = array2;

或者改变 getArray() 要始终返回相同的数组:

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

相关问题