这可能是一个愚蠢的问题,但是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的数组为单位。