Java 数组本质上是在内存中分配的连续内存区域,用于存储相同类型元素的集合。数组元素按照顺序存储在内存中,每个元素都占用固定的空间,从 0 开始索引,第一个元素存储在起始地址处,后续元素依次存储在紧随其后的内存地址中。由于元素连续存储,访问数组元素非常高效,且节省空间。但数组长度固定,无法改变,如果未完全填充,则会浪费内存空间。
Java 数组存储
Java 数组是如何存储的?
Java 数组本质上是在内存中分配的一块连续内存区域,用于存储相同类型元素的集合。数组元素按照顺序存储在内存中,每个元素都占用固定的空间。
详细说明
立即学习“Java免费学习笔记(深入)”;
当创建一个 Java 数组时,jvm(Java 虚拟机)会在内存中分配一个连续的内存块来存储该数组。数组的长度是固定不变的,一旦创建,就不能再被改变。
数组中的每个元素都占据一个与元素数据类型相对应的内存空间。例如,int 类型元素占据 4 个字节,double 类型元素占据 8 个字节。
数组索引从 0 开始,因此数组的第一个元素存储在内存中数组块的起始地址处。后续元素依次存储在紧随其后的内存地址中。
举例说明
假设我们创建一个包含 5 个 int 型元素的数组:
int[] myArray = new int[5];
登录后复制
JVM 将在内存中分配一块 5 * 4 = 20 个字节的连续内存区域来存储这个数组。
myArray[0] 存储在数组块的起始地址处,而 myArray[1] 存储在紧随 myArray[0] 之后的地址处。依此类推,myArray[4] 存储在数组块的最高地址处。
优点
- 快速的元素访问:由于数组元素在内存中是连续存储的,因此访问数组中的任何元素都非常高效。
- 节省空间:与其他数据结构(如链表)相比,数组在存储大量相同类型元素时可以节省大量空间。
缺点
- 固定长度:一旦创建,数组的长度就不能改变。如果需要增加或减少数组大小,则需要创建一个新数组并复制元素。
- 内存浪费:如果数组未完全填充,则会浪费一些内存空间。