List list = new ArrayList();
在这段源码中,构造方法初始化了一个空数组。
DEFAULTCAPACITY_EMPTY_ELEMENTDATA就是一个空数组。
在这个时候,list就只是一个空数组,size=0,length=0;
list.add("java");
在执行add操作的时候,size = 0,length=0
当size+1 - length >0时,也就是此时我需要的容量大于数组的长度时就需要扩容了
到现在为止,一个长度为10的数据就诞生了。
elementData[size++] = “java”; return true;
然后数组添加,size++,执行完成,返回true。
方法执行完成,此时状态,size=1,length=10;
当size+1>leng的时候就需要再次进行扩容,以length的1.5倍扩容
然后添加完成,return true。
总结:如果我们初始化一个ArrayList,在构造方法中没有指定容量,那么这个ArrayList的容量就应该是0,而不是10。