通过查看源码debug,可以看到一开始我们申请的是一个空的object数据,当我使用list.add()时,它会判断当前容量的大小;先与默认capacity10比较,如果小与10把数组的大小使用Arrays.copy进行数组扩容为0,当大于10时,扩大的容量为:
newCapacity = oldCapacity + (oldCapacity >> 1);
当大于最大容量时:
return (minCapacity > MAX_ARRAY_SIZE) ?
Integer.MAX_VALUE :
MAX_ARRAY_SIZE;
可以看出大于最大容量时,使用的是Integer的最大值