1、默认arrayList的数组未初始化
         ArrayList<Integer> arrayList = new ArrayList<>();System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
 java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     016   4                  int ArrayList.size            020   4   java.lang.Object[] ArrayList.elementData     []
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
 
 
  2、第一次使用时会初始化:长度为10
         ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
 java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     116   4                  int ArrayList.size            120   4   java.lang.Object[] ArrayList.elementData     [1, null, null, null, null, null, null, null, null, null]
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
 
 
  3、第一次扩容:第11次添加数据时扩容,扩容到15
         ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);for (int i = 2; i <=10; i++) {arrayList.add(i);}arrayList.add(11);System.out.println(ClassLayout.parseInstance(arrayList).toPrintable());
 java.util.ArrayList object internals:
OFF  SZ                 TYPE DESCRIPTION               VALUE0   8                      (object header: mark)     0x0000000000000001 (non-biasable; age: 0)8   4                      (object header: class)    0x0000d7a012   4                  int AbstractList.modCount     1116   4                  int ArrayList.size            1120   4   java.lang.Object[] ArrayList.elementData     [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, null, null, null, null]
Instance size: 24 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total
 
 
 4、 实现通用的数组:ArrayList
 - 初始化:内部使用数组保存数据
- 方法:是否为空,是否已满,获取元素个数,新增数据,删除数据,修改数据,获取指定索引位置的数据,遍历打印:正序反序,扩容,缩容
 
  5、ArrayList集合的长度和容量不是同一个意思。
 - 长度(size)是指ArrayList中当前存储的元素数量。而容量(capacity)是指ArrayList内部数组可以容纳的元素数量。在ArrayList初始化时,它会创建一个内部数组,这个数组的初始大小是10。即使你还没有添加任何元素,这个数组仍然存在,所以ArrayList的初始长度是0,但初始容量是10。
- 当你向ArrayList添加元素时,如果当前长度小于容量,那么它不会重新分配数组。只有当长度超过了容量时,ArrayList才会考虑扩容,扩容后的容量通常是原容量的1.5倍加上10。
- 所以,长度和容量是两个不同的概念,但它们之间有一定的关联。
- ArrayList集合的length和capacity不是同一个意思。  
- length表示ArrayList集合中元素的个数,可以通过size()方法获取。  
- capacity表示ArrayList集合的容量,即当前ArrayList能够存储的元素个数的上限,可以通过capacity()方法获取。  
- 简单来说,length表示当前ArrayList中存储的元素个数,
- 而capacity表示ArrayList能够存储的元素个数的上限。当向ArrayList中添加元素时,如果超过了ArrayList的容量,ArrayList会自动扩展其容量,以容纳更多的元素。
 
  