gpt4 book ai didi

Java 数组由于传递错误而修改自身?

转载 作者:行者123 更新时间:2023-11-29 06:35:32 25 4
gpt4 key购买 nike

我正在用另一个“array2”实例化一个数组“array1”,然后尝试修改“array2”,这会更改“array1”。几个小时后,我意识到这可能是调用或传递引用/值错误。有人可以帮我解决这个问题并让我朝着正确的方向前进吗?

    int[] src = {0,4,3,2,1};
int[] dest = src;

dest[0] = dest[0] + 2;

for (int node: dest) {
System.out.print(node + " ");
}

System.out.println("");
for (int node: src) {
System.out.print(node + " ");
}

这会产生:

2 4 3 2 1

2 4 3 2 1

即源数组也被修改了。提前致谢。

最佳答案

当你做的时候

int[] dest = src;

两个变量都引用内存中的相同位置。换句话说,它们引用同一个数组。您可以尝试使用 Arrays.copyOf:

int[] dest = Arrays.copyOf(src, src.length);

编辑:正如@BackSlach 评论的那样,您还可以使用 clone() :

int[] dest = src.clone(); //clone() is a method present in every object in java

作为第三种选择,您可以使用 System.arrayCopy()

int[] dest = new int[src.length];
System.arraycopy(src, 0, dest, 0, src.length);

注意 they have similar performance .

关于Java 数组由于传递错误而修改自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com