* 这里其实是赋值了一个共享的空数组,数组在第一次添加元素时会判断elementData是否等于DEFAULTCAPACITY_EMPTY_ELEMENTDATA,假如等于则会初始化容量为DEFAULT_CAPACITY 也就是10 * 符合 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 的注释说明 * private static int calculateCapacity(Object[] elementData, int minCapacity) 这个方法...
④ DEFAULT_CAPACITY 这个变量的注释,有点小怪,默认初始容量 ,但是记住,我们以1.8源码为准,眼见为实 。因为可以看到 : 第一句话: ArrayList的容量是该数组缓冲区的长度(上文已经说到了)。 第二句话,如果一个空的ArrayList 被第一次add的时候, DEFAULT_CAPACITY=10这个值会被用上。 所以到了这里, 再看一下...
这个很简单的代码,入口是main函数,第一行就是创建了一个ArrayList,里面的元素都是String类型,使用默认无参的构造函数,你点击构造函数,进入源码来看看:private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};transient Object[] elementData;private int size;public ArrayList() { this.eleme...
第二句话,如果一个空的ArrayList 被第一次add的时候, DEFAULT_CAPACITY=10这个值会被用上。所以到...
进入方法之后,我们看到了一个if语句,发现了么,这个就是我们之前在无参构造函数时卖的关子,当当前的大小为默认数组大小的常量时,minCapacity(即位数组中存储的数据大小即size+1)就为DEFAULT_CAPACITY, minCapacity之间大的那个,而minCapacity的默认值为0,所以从这里就可以知道,无参构造函数产生的数组大小为10~~ ...
capacity()(返回当前容量) toString()(返回此序列中数据的字符串表示形式) 4.Array/Date/GregorianCalendar after(在..之后) before(在..之前) clone(vt. 克隆,以无性繁殖技术复制,非法复制;n. 无性繁殖的动植物,复制品,仿品) calendar(n. 日历,挂历,记事本,(一年之中的)重大事件;v. 把..列上日程/表中...
1、ArrayList底层数组默认初始化大小为10,但是使用ArrayList的无参构造函数的时候,并没有马上进行扩容,我们查看源码就会发现,无参构造函数只是将ArrayList中的DEFAULTCAPACITY_EMPTY_ELEMENTDATA(一个空数组)赋值给了底层数组。 2、ArrayList是非线程安全的,是因为ArrayList底层数组,及维护数组的属性等信息,在修改的时候并没...
DEFAULT_INITIAL_CAPACITY :HashMap 的默认容量, 16 MAXIMUM_CAPACITY:HashMap 的最大支持容量, 2^30 DEFAULT_LOAD_FACTOR:HashMap 的默认加载因子 TREEIFY_THRESHOLD:Bucket 中链表长度大于该默认值,转化为红黑树 UNTREEIFY_THRESHOLD:Bucket 中红黑树存储的 Node 小于该默认值,转化为链表 ...
" 容量,如果不指定,默认容量是 16(static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;)
②在ensureCapacityInternal中,首先将elementData数组 与 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 进行比较,这里我们假设的构造方法为下图,此时两个数组相等,minCapacity等于大的值,DEFAULT_CAPACOTY的值为10(在成员变量中定义),即minCapacity=10。 ③modcount是在ArrayList的父类AbstractList中定义的成员变量,用于记录修改次数(对...