gpt4 book ai didi

java - 关于数组不返回预期值的简单代码片段

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:50 25 4
gpt4 key购买 nike

为什么这段代码返回 4 4 而不是 4 1?

我通过 for 循环追踪到新的 values[k] 为 4,但我知道 int[] 数字已复制到原始 int[] 值数组,那么 int[] 数字是否通过 for 循环随着 int[] 值发生变化?

这是我不知道的规则吗?

int[] values = { 1, 3, 1, 3, 1 };
int[] numbers = values;
for (int k = 0; k < values.length; k++)
{
values[k] = k * 2;
}
System.out.print(values[2]);
System.out.print(" " + numbers[2]);

最佳答案

因为在Java中,数组是references 。基本上,values 不是数组本身,而是“引用”或“指向”数组的东西。引用和数组本身已断开连接。

当您执行numbers=values时,您不会创建值的副本并放入名为numbers的新数组中,而是使数字指向与values指向的同一对象。这意味着每当您更改其中之一时,都会同时更改两者。请参阅Make copy of array Java了解如何复制

关于java - 关于数组不返回预期值的简单代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823490/

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