这可能是一个愚蠢的问题,但是Java数组接受的内容超过其大小吗?如果是,那为什么我们需要ArrayList?我以为数组的大小固定,无法在运行时增加。这是我的测试代码:

public class ArraySizeDemo {
    int[] anArray = new int[5];

    public int[] getAnArray() {
        return anArray;
    }

    public void setAnArray(int[] anArray) {
        this.anArray = anArray;
    }
}

public class ArrayDemo {
    public static void main(String[] args) {
        ArraySizeDemo ar = new ArraySizeDemo();

        int arr[] = {0,1,2,3,4,5,6,7,8,9};
        int testarray[] = new int[10];
        ar.setAnArray(arr); // it should give an error here since I am trying to
        // assign an array of 10 to an array of 5
        testarray = ar.getAnArray();
        for (int i = 0; i < arr.length; i++)
            System.out.println(testarray[i]);
    }
}

最佳答案

那作业

this.anArray = anArray;

不会将anArray的元素复制到this.anArray

它将this.anArray变量的值更改为引用anArray引用的同一数组。因此,在赋值this.anArray之前指的是长度为5的数组,在赋值之后,它是指长度为10的不同的数组对象

如果您尝试将源数组的元素复制到(较小的)目标数组而不是此分配,则将引发异常,因为数组的长度无法更改,因此长度为10的数组的元素无法容纳以长度为5的数组为单位。

10-08 11:43