Java数组拷贝

Author Avatar
Mizore 3月 21, 2020

直接赋值(?)

这种叫法不严谨。。

在Java中允许直接将一个数组变量拷贝到另一个数组变量。

int[] x = new int[4];
for(int i = 0; i<4; i++) {
    x[i] = i;
}
int[] y = x;

此时y的每一个元素都与x相等。

但是,如果我们改变y的元素的值:

y[0] = 3;

再输出 x[0],这时会输出3,所以这种直接拷贝数组变量的方法会使两个变量指向同一个数组(同一段内存?)。在我看来这与c++中的引用是类同的。

Arrays类的copyof方法

使用方法如下:

int[] y = Arrays.copyof(x, x.length);

经过与上方相同的测试发现,y与x指向的并不是同一个数组。

第二个参数是新数组的长度,这个方法通常用来增加数组的大小。如果数组是数值型,额外的元素将被赋值为0;如果是布尔型,则会被赋值为false;如果新数组长度小于原数组,则只拷贝前面的值。