源码之ArrayList
ArrayList:
底层是一个被transient修饰的object类型的数组,为什么要用transient来修饰呢?
被transient关键字修饰的变量不会被序列化、因为因为ArrayList数组elementData中有未使用的空间 ,如果没有使用的空间也序列化,势必会影响性能.ArrayList的动态数组elementData被transient 修饰的 那么反序列化后的ArrayList会丢失了原先的元素吗? ArrayList在序列化的时候会调用writeObject,反序列化时调用readObject 也就是自定义序列化,来实现序列化。所以不会丢失元素。
来看带参数的构造函数、如果Array List初始化的容量大于0的话、那么初始的数组的大小就是传入的参数的容量、如果传入放入参数是0的话、那么初始的数据指向了一个空的数组
如果初始的容量小于0的话那么就会抛出IllegalArgumentException的异常。
没有参数的构造函数的初始的数组也是一个空的数组、