众所周知,数组的长度是不可变的,那么为什么动态数组长度可随意更改呢?
这个要从内存中的数据模型开始讲了:
数组每一个元素类型都是统一的,且连续不间断的。
如果将内存想象成一个宾馆,你在预定宾馆时,同行只有4个人,让宾馆服务员寻找了个4个连续的包间,且已经入住。因为宾馆可能会有客人预定包间。
当你再次有朋友来宾馆订房间,且要求跟你们4个包间挨着时,这个时候可能你们相邻的包间已经预定出去。数组理论是不可能再次扩容。
这个时候就要用到动态数组,动态数组是可扩容的,但是数组理论上是不可扩容的,但是动态数组低层又完全是借用了数组。动态数组可多次扩容是因为:每次扩容都会重新开辟一个空间,将值从原内存拷贝至新内存