1.了解ArrayList变量的
DEFAULT_CAPACITY :初始数组大小
当执行无参构造时,数组 elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA 这一点需要记住,当添加第一个元素时两个内存地址相等
关于
transient Object[] elementData;
transient 关键字的含义可以参考:https://www.cnblogs.com/lanxuezaipiao/p/3369962.html
当执行add方法时:
size:默认为0
如果集合长度小于10则将长度默认设置为10,
第一次传入过来的minCapacity为10
oldCapacity:为集合真实长度(此时集合长度并不是10), 而newCapacity:为 oldCapacity/2 +oldCapacity
如果newCapacity<minCapacity 则仍将集合长度设置为10
当新的集合长度-Max_ARRAY_SIZE大于零
则会去判断长度,最大长度为2的31次方-1,超过则抛出异常
判断条件通过 会执行 Arrays.copy()//传入的两个参数 第一 当前数组,新的长度
其中 newType 与Object[].class做比较,这一点设计到了反射,对于一个类,它的class是相等的
反射参考:https://blog.youkuaiyun.com/sinat_38259539/article/details/71799078