ArrayList 操作的底层其实是Object[] 数组,对该数组进行了包装。
ArrayList 在创建时若不指定元素个数,会使用默认值:private static final int DEFAULT_CAPACITY = 10;
内部相当于创建了一个: Object[] object = new Object[10];
应为数组的容量在创建时指定,且固定不可变,ArrayList添加元素个数超过了10个时,该数组就已经满了,
然后会调用private void grow(int minCapacity){。。。。}方法来扩容,实际就是创建一个新数组,长度为
int newCapacity = oldCapacity + (oldCapacity >> 1);//原来的1.5倍
然后把旧数组复制过来,使用新数组进行操作:
elementData = Arrays.copyOf(elementData, newCapacity);//扩展空间并复制