数组
数组是一段固定长度的存放相同类型数据的连续内存区域。
在java中当我们创建一个数组时,JVM会在堆内存中为我们分配一块连续的内存区域,这块内存区域的起始地址就是数组的地址,数组的长度以及数据类型决定了分配的内存空间的大小,对于基本数据类型,我们可以和容易的计算出所需的内存空间的大小。而对于引用数据类型的数组,数组中元素存放的是对象的引用地址,所以数组的内存空间大小也是固定的。
例如:
int[] arr = new int[10];
上面声明了一个长度为10的int类型的数组,jvm为我们分配了10个int类型的内存空间,它的大小可以计算出来 10 * 4 = 40
个字节。同时我们可以发现可以通过数组的地址以及元素的索引就可以直接计算出对于元素的地址。
元素的地址 = 数组的地址 + 数组中每个元素的大小 * 元素的索引
有了元素的内存地址,就可以直接通过这个地址访问元素了,这也就是数组我们可以进行随机访问的原理,同时也是数组的查询的时间复杂度为O(1)的原因。