gpt4 book ai didi

java - 不明白输出

转载 作者:行者123 更新时间:2023-12-01 06:50:55 25 4
gpt4 key购买 nike

我认为该代码段的输出没有理由在底部与顶部有所不同。

public static void main(String[] args) {       

int[] list1 = {2, 4, 8, 16, 32, 64, 128, 256};
int[] list2 = list1;
int max = list1.length - 1;
for (int k = 0; k < list1.length; k++) {
System.out.print(list1[k] + " ");
list2[k] = list1[max - k];
}
System.out.print("\n");
for (int k = 0; k < list1.length; k++) {
System.out.print(list1[k] + " ");
}
}

输出:

2 4 8 16 32 64 128 256 
256 128 64 32 32 64 128 256

输出的顶部部分是 list1 的内容。我也打印了第二个列表的 list1,但我认为没有理由让它有所不同。list2 发生变化,但 list1 永远不会变化。

这是来自学校的,我只是很困惑为什么两个输出不同。

编辑:我知道它与 list2[k] = list1[max - k]; 有关,但我不明白为什么这会以任何方式改变 list1。

最佳答案

它们是不同的,因为两个变量都指向同一个对象。要获得相同的结果,请替换此行:

int[] list2 = list1;

至:

int[] list2 = list1.clone();

关于java - 不明白输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29758050/

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