为什么使用Arrays.copyof()增加了静态数组的大小?

时间:2014-11-26 14:20:13

标签: java arrays

我认为数组是静态的,即元素大小不能增加或减少。为什么当我声明一个x元素数组时,我可以将y> x元素的数组复制到我的新数组中,如下所示:

import java.util.Arrays;

public class CopyOf {

public static void main(String[] args) {
    int[] array ={4,5,4,65,465,4,56,456,6,43,3,5,45};

    //copiedArray has 4 elements
    int[] copiedArray = new int[4];
     copiedArray = Arrays.copyOf(array, array.length);

    // copiedAarray now has 13 elements
    System.out.println(Arrays.toString(copiedArray));

    }

}

2 个答案:

答案 0 :(得分:9)

int[] copiedArray = new int[4];

创建数组引用,并将其分配给具有4 int(s)空间的新数组。然后,这个

copiedArray = Arrays.copyOf(array, array.length);

创建一个新数组并将其分配给copiedArray。在上一行创建的4 int(s)不再可访问,现在可以进行垃圾回收。

答案 1 :(得分:3)

copiedArray将其引用从数组[4]更改为数组[13]

现在变量arraycopiedArray指向同一个对象。