》elementData:表示的就是当前存储元素的数组  》size:他表示当前还没有添加新元素前的数组中有效的元素个数,比如说数组长度为10,只保存了5个元素,那有效长度就是5  》MAX_ARRAY_SIZE:最大数组长度,它用来标识当前数组可保存元素的最大长度,值为Integer_MAX_VALUE -8,即2147483647 - 8 ,这里的 8 代表8字节用来保存数组本身的内存大小。现在我们进入到add()里面看他们具体如何实现的,如下代码:  》ensureCapacityInternal:这个方法意为“确保内部变量”,什么意思呢?  》Arrays.copyOf,就不看源码了,简单说一下:它这个方法能返回一个扩容后的数组,将旧数组elementData的数据复制到长度为newCapacity的新数组中。

新手入门了解ArrayList扩容机制

新手入门了解ArrayList扩容机制

新手入门了解ArrayList扩容机制