gpt4 book ai didi

java - 这个 javacode 究竟做了什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:47:20 26 4
gpt4 key购买 nike

我有一个数组 a1 和 a2

代码a1=a2;是什么意思?到底做什么?复制数组 a1 中的所有元素?这就是我的想法,但似乎并没有发生?

不,它不复制任何数组元素,而是分配一个引用。总之,这意味着 a1 引用与 a2 完全相同的数组对象引用。

代码:

int[] a1 = new int[] { 1, 2, 3 };
int[] a2 = new int[] { 4, 5, 6 };
a1 = a2;
a1[1] = 3;
a2[2] = 2;
a2 = a1;
for (int i = 0; i < a2.length; i++) {
System.out.print(a2[i] + " ");
}

谁能解释为什么结果是 4 3 2 而不是 4 3 6?

最佳答案

不,它不复制任何数组元素,而是分配一个引用。总之,这意味着 a1 与 a2 引用完全相同的数组对象引用

如果你想复制元素,你可以使用 for 循环,或者 System.arraycopy(...)

如果你想进行复制,那么我会使用for循环,并复制每个元素,可能使用复制构造函数或通过克隆,或任何最有效的方法感测阵列所持有的项目。


编辑

你的附加代码和我的评论:

int[] a1 = new int[] { 1, 2, 3 }; 
int[] a2 = new int[] { 4, 5, 6 };
a1 = a2; // both array variables refer to the one same array object, 4, 5, 6
a1[1] = 3; // you're changing the one single array's 2nd item
a2[2] = 2; // you're changing the same array's 3rd item
a2 = a1; // this does nothing really as they already refer to the same object
for (int i = 0; i < a2.length; i++) {
System.out.print(a2[i] + " ");
}

So thats why the result is 4 3 2 and not 4 3 6?

是的,看评论

关于java - 这个 javacode 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20623140/

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