And*_*o98 0 java arrays for-loop output
我认为没有理由为什么这个代码段的输出在底部应该与顶部不同.
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] + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
2 4 8 16 32 64 128 256
256 128 64 32 32 64 128 256
Run Code Online (Sandbox Code Playgroud)
输出的顶部是list1.我也打印出list1作为第二个,但我认为没有理由让它与众不同.list2更改但list1永远不会更改.
这是来自学校,我对两个产出不同的原因感到困惑.
编辑:我知道它与某些事情有关,list2[k] = list1[max - k];但我不明白为什么这会以任何方式改变list1.
它们是不同的,因为两个变量都指向同一个对象.要获得相同的结果,请替换此行:
int[] list2 = list1;
Run Code Online (Sandbox Code Playgroud)
至:
int[] list2 = list1.clone();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |