JDK7和JDK8中的底层源码有所不同
1、JDK7中
1.1 空参构造器
ArrayList list = new ArrayList( );
空参构造器默认创建的底层数组长度是10
1.2 add
如果此次的添加,导致了底层的elementData数组的容量不够,那么就进行扩容
默认情况下,会扩容为原来容量的1.5倍,同时会将原来数组中的数据复制到新的数组中
结论:开发中使用带参数的构造器。
1.3 带参构造器
使用带参构造器来指定创建的底层数组的长度
2、JDK8中
调用空参构造器的时候不会再直接创建好指定大小的底层数组。
在第一次调用add方法的时候,才会进行创建操作。
后续的添加和扩容操作不变。
3、结论
JDK8中ArrayList中对象的创建,延迟了底层数组的创建,可以节省内存。