数组 :
a[i]_adress =base_adress +i*date_type_size //基础位置+位于初始位置的第几个位置*数组中数据类型的大小
刚刚说了连续的存储空间的好处有利定有弊,坏处就是在给数组插入数据的时候不能快速插入,每一次插删除入都需要移动后面储存位置所以说数组的插入和删除是很浪费性能的。 插入和删除的时间复杂度为O(n)在 java的API 里面有封装好的容器,那就是ArrayList,那么容器和数组比的话谁更有优势呢? 容器 也就是将数组的细节操作还有数据类型封装起来,还有就是它内部是可以动态扩容的(每次动态扩容的大小为其原来的1.5倍)说到动态扩容会涉及到内存的申请所一说在创建容器数组的时候可以固定给一个值(在知道最大的纯储量的的时候且符合业务场景) 那么如果直接使用数组的话肯定会规避掉一些很细节的问题比如说使用容器内存浪费,还有就是容器是不能为存储值类型的如int,long等 在看专栏的时候有一个问题也就是为什么数组下标的起始值为 0而不为1 ? 数组的计算公式为 a[i]_adress =base_adress +i*date_type_size 从数组的内存模型来看其下标也就是其偏移(offset) 如果用a来表示数组的首地址,那么a[0]也就是偏移量 那么也就是a[k]表示k 个 type_size的位置 ,那么如果从1开始那么还得减1 那么计算地址公式就得多算一步,对于底层来说这一步是很浪费性能的。所以说是从0开始的 写到这个想到数据库的分页也不就是这个理吗?这个得想想。。。。。。