这会是深层复制的一个例子吗?

时间:2017-07-01 00:16:09

标签: java arrays deep-copy

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,但希望保留其原始值,以便我可以在以后使用它,我收到的提示是使用深层复制。我无法判断我的代码是否被视为深层复制......

2 个答案:

答案 0 :(得分:3)

aint(s)的数组,它们只有原始值 - 所以答案是肯定的。修改b(或c)不会影响a。但是,您可以使用Arrays.copyOf(int[], int)之类的

int[] b = Arrays.copyOf(a, a.length);
int[] c = Arrays.copyOf(a, a.length);

答案 1 :(得分:1)

Deep copy术语无法应用于复制纯整数数组。这是关于更复杂的数据结构,如对象集合,也可以包含嵌套对象/集合。

相关问题