【发布时间】:2017-07-01 00:16:09
【问题描述】:
int[] a = new int[10];
for (int i = 0; i < 10; i++) {
a[i] = randomFill();//randomFill is a method that generates random numbers
}
int[] b = new int[a.length];
for (int j = 0; j < a.length; j++) {
b[j] = a[j]
}
int[] c = new int[a.length];
for(int k = 0; k < a.length; k++) {
c[k] = a[k]
}
数组 b 和数组 c 都是数组 a 的深层副本吗? 我需要修改数组 a 但想保留它的原始值,以便以后可以使用它,我收到的提示是使用深拷贝。我不知道我的代码是否被视为深拷贝......
【问题讨论】:
-
这是一个浅拷贝,但由于您使用的是基元而不是对象,所以您只需要一个浅拷贝(没有实际区别)。
-
是的,如果可以编译,b 和 c 都将是 a 的深层副本。添加几个分号以使其编译。
-
@RudyVelthuis
b = c = a; -
@RudyVelthuis:那甚至不是副本。只有一个数组有多个引用。
-
对另一个变量的赋值是引用的副本。这是尽可能肤浅的。