ArrayList的构造方法
1.初始化大小:传入初始化容量,创建数组,可以避免数组扩容从而来提升性能,同时合适使用内存。
2.通过传入一个集合来构建ArrayList,java8中有一段跳过bug的代码,在9中修复了
3.无参构造,使用最为频繁
空参构造创建的ArrayList其实初始化的时候容量是0,ArrayList其实是一个空数组,在第一次添加元素的时候才会触发扩容操作,第一次扩容的容量10,之后是1.5倍。
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
为什么空参构造实例化对象的时候,是给一个空数组?
ArrayList考虑到节省内存,一些使用场景下仅仅是创建了ArrayList对象,实际并未使用。所以,ArrayList优化成初始化是一个空数组,在首次添加元素时,才真正初始化为容量为10的数组。