定义:
数组是一种线性表数据结构,它使用一组连续的内存空间,存储一组具有相同类型的数据。
内存分配:
假设有一个数组 int[] a = new int[10],当创建该数组时,计算机会给该数组分配一个连续的内存空间。
地址计算:
假设数组第一个元素a[0]的地址为base_Address,那么数组中第i个元素的内存地址为:
a[i]_address = base_address + i * data_type_size
data_type_size表示数组中每个元素的大小
数组的优势:
数组适合查询,根据下标的查询时间复杂度为O(1)
数组的弱势:
不适合插入删除
Java中数组和ArrayList的对比:
1,数组长度是不可变的
2,arrayList是可变的,当长度不够时,会自动扩容为原来长度的1.5倍
3,arrayList封装了数组的很多细节操作,如插入,删除,数据搬移等
4,arrayList 不能存储基本数据类型如int,long,需要封装为Integer,Long类,但是自动装箱和自动拆箱会有性能损耗。