先看结果

【jdk源码分析】jdk8的ArrayList初始化长度为0_Java

 用的是反射获取elementData底层数组的长度

查看源码

无参构造函数没有了this.size = 10;

图1

【jdk源码分析】jdk8的ArrayList初始化长度为0_Java_02

图2

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_03

 图3

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_04

图4

【jdk源码分析】jdk8的ArrayList初始化长度为0_jdk源码分析_05

java的基本数据类型默认值

所以无参构造时长度为0

 

 add后源码

图5

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_06

图6

【jdk源码分析】jdk8的ArrayList初始化长度为0_数组_07

图7

【jdk源码分析】jdk8的ArrayList初始化长度为0_jdk源码分析_08

 

图2

【jdk源码分析】jdk8的ArrayList初始化长度为0_数组_09

图8

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_10

图9

 【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_11

图7

【jdk源码分析】jdk8的ArrayList初始化长度为0_数组_12

图6

【jdk源码分析】jdk8的ArrayList初始化长度为0_数组_13

图10

【jdk源码分析】jdk8的ArrayList初始化长度为0_jdk源码分析_14

图11

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_15

图12

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_16

 图13

 【jdk源码分析】jdk8的ArrayList初始化长度为0_无参构造函数_17

图14

【jdk源码分析】jdk8的ArrayList初始化长度为0_无参构造函数_18

图15

【jdk源码分析】jdk8的ArrayList初始化长度为0_基本数据类型_19

图16

【jdk源码分析】jdk8的ArrayList初始化长度为0_数组_20

此时默认长度才为10