ArrayList底层是一个object数组,线程不安全,这是与Vector的区别。

简单来说,创建ArrayList的时候使用无参构造器会返回内部静态空数组,添加元素时进行第一次扩容,扩到10,之后按1.5倍扩容,直到1.5倍后大于Integer.MAX,比较原数组长度和Integer.MAX,原数组大则用Integer.MAX,否则用Integer.MAX-8。
使用有参构造器除了初始创建时不同,后续扩容原理一致。