use*_*'MJ 1 java arrays arraylist
arraylist 内部使用 Object[] Array,它是同构的,那么 arraylist 是如何异构的
以下在运行时抛出异常:
Object[] array = new String[3];
array[0] = "a";
array[1] = 1; // throws java.lang.ArrayStoreException
Run Code Online (Sandbox Code Playgroud)
不像以下编译和运行没有问题
ArrayList list = new ArrayList<String>();
list.add("a");
list.add(1); // works
list.add(new Object()); // works
Run Code Online (Sandbox Code Playgroud)
an 的后备数组ArrayList是 an Object[](即该数组的元素类型是Object类,而不是 的任何子类Object),因此您可以放置任何引用类型(以及自动装箱为其相应包装类型的原语) 在里面。
以下不会抛出异常:
Object[] array = new Object[3];
array[0] = "a";
array[1] = 1;
Run Code Online (Sandbox Code Playgroud)
您可以在ArrayList构造函数中看到后备数组的初始化:
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity]; // here
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |