看源代码你就很清楚了。
public ArrayList() {
this(10);
}
ArrayList里面是用了一个泛型的数组来保存元素的。
这是初始化的时候的代码,这里你很容易就知道了初始化的容量为什么是10,至于说为什么超过了10个继续添加的时候不会报错,是因为在添加的时候add方法中做了容量判断,如果是超过了已有的容量,它就会新建一个数组,这个数组的长度是原来的1.5倍+1,比如初始化的时候为10,第一次增长之后的长度为16,然后将原来的数据copy到新的数组中,再继续添加新的元素。具体的代码太复杂,不好粘贴出来,你可以去ArrayList类中查看相关的代码
|