跳到主要内容

11.1 数组

数组是一种比较基本的数据结构,也是到目前为止接触的第一个引用数据类型

数组相较于前面接触的基本数据类型,它可以存储多个值(元素)。数组这种数据结构,它的固定长度,在声明时需要指定数组长度,且只能存储同一数据类型数据。它的优点是通过索引随机访问快。

数组在内存中占用的是一块连续的内存空间,这也是为什么要在一开始就为其指定长度的原因。占用连续内存的好处就是,通过内存地址加上索引偏移就可以快速访问指定内存位置上的数据。

数组的声明

数组类型[] 数组名;

public static void main(String[] args) {
int[] a1;
int a2[];
}

数组的初始化

动态初始化方式:使用new关键字初始化数组。这种初始化方式,数组中的元素是数据类型的默认值,例如int类型的默认值是0;

public static void main(String[] args) {
int[] a = new int[10];
}
public static void main(String[] args) {
int len = 10;
int[] a = new int[len];
}

静态初始化方式:

public static void main(String[] args) {
int[] a1 = new int[]{1, 2, 3, 4, 5};
int[] a2 = {1, 2, 3, 4, 5};
}

访问数组元素

使用数组的索引访问数组指定位置的元素,索引从0开始。

public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int elem = a[0];
}

获取数组长度

数组有一个length属性,可以获取数组的长度。

public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int len = a.length;
}

使用循环遍历数组元素

public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}

foreach循环

也叫"增强for循环",用于遍历数组或者集合中的元素。

public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
for (int elem : a) {
System.out.println(elem);
}
}

数组下标越界

当访问超出数组长度的索引,就会发生数组下标越界异常。

public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
int elem = a[5]; // ArrayIndexOutOfBoundsException
}