4.5.4 使用数组

4.5.4 使用数组

数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。访问数组元素都是通过在数组引用变量后紧跟一个方括号([]),方括号里是数组元素的索引值,这样就可以访问数组元素了。访问到数组元素后,就可以把一个数组元素当成一个普通变量使用了,包括为该变量赋值和取出该变量的值,这个变量的类型就是定义数组时使用的类型。

Java语言的数组索引是从0开始的,也就是说,第一个数组元素的索引值为0,最后一个数组元素的索引值为数组长度减1。下面代码示范了输出数组元素的值,以及为指定数组元素赋值:

1
2
3
4
// 输出objArr数组的第二个元素,将输出字符串"李刚"
System.out.println(objArr[1]);
// 为objArr2的第一个数组元素赋值
objArr2[0] = "Spring";

数组越界

如果访问数组元素时指定的索引值小于0,或者大于等于数组的长度,编译程序不会出现任何错误但运行时出现异常:java.lang.ArrayIndexOutofBoundsException:N(数组索引越界异常),异常信息后的N就是程序员试图访问的数组索引。
下面代码试图访问的数组元素索引值等于数组长度,将引发数组索引越界异常:

1
2
// 访问数组元素指定的索引等于数组长度,所以下面代码将在运行时出现异常
System.out.println(objArr2[2]);

length属性

所有的数组都提供了一个length属性,通过这个属性可以访问到数组的长度,一旦获得了数组的长度,就可以通过循环来遍历该数组的每个数组元素。

下面代码示范了输出prices数组(动态初始化的int数组)的每个数组元素的值

1
2
3
4
// 使用循环输出prices数组的每个数组元素的值
for (int i = 0; i < prices.length; i++) {
System.out.println(prices[i]);
}

执行上面代码将输出5个0,因为prices数组执行的是默认初始化,数组元素是int类型,系统为int类型的数组元素赋值为0
下面代码示范了为动态初始化的数组元素进行赋值,并通过循环方式输出每个数组元素:

1
2
3
4
5
6
7
// 对动态初始化后的数组元素进行赋值
books[0] = "Hello";
books[1] = "World";
// 使用循环输出books数组的每个数组元素的值
for (int i = 0; i < books.length; i++) {
System.out.println(books[i]);
}

上面代码将先输出字符串”Hello”和”World”,然后输出两个null。因为books使用了动态初始化,系统为所有数组元素都分配一个null作为初始值,后来程序又为前两个元素赋值,所以看到了这样的程序输出结果。
从上面代码中不难看出,初始化一个数组后,相当于同时初始化了多个相同类型的变量,通过数组元素的索引就可以自由访问这些数组元素。使用数组元素与使用普通变量并没有什么不同,一样可以对数组元素进行赋值,或者取出数组元素的值。