4.1 数组与下标
数组可以把多个相同类型的值按顺序存放在一起。Java 数组下标从 0 开始。
java
int[] scores = {88, 91, 76, 95, 83};
System.out.println(scores[0]); // 88
System.out.println(scores[4]); // 83长度为 5 的数组,合法下标是 0 到 4。Java 会在运行时保护数组:如果读取 scores[5],程序会抛出 ArrayIndexOutOfBoundsException,而不是悄悄访问错误位置。
声明数组
Java 中更常见的写法是把方括号放在类型后面:
java
int[] values;
double[] temperatures;
String[] names;可以在创建时直接写出初始值:
java
int[] scores = {88, 91, 76, 95, 83};也可以先创建固定长度的数组,再逐个填入:
java
int[] counts = new int[4];
counts[0] = 12;
counts[1] = 9;
counts[2] = 15;
counts[3] = 6;Java 数组创建后长度固定。new int[4] 会创建正好 4 个位置。你可以修改每个位置里的值,但不能让这个数组本身变长。
默认值
Java 创建新数组时,每个位置都会得到默认值:
- 数字数组默认是
0或0.0。
boolean[]默认是false。
char[]默认是空字符'\0'。
String[]这样的对象数组默认是null。
java
int[] counts = new int[3];
System.out.println(counts[0]); // 0数组长度
数组使用字段 .length,不是方法调用:
java
int[] scores = {88, 91, 76, 95, 83};
System.out.println(scores.length); // 5注意这个区别:
- 数组长度:
scores.length
- 字符串长度:
name.length()
这个差别很小,但必须写对。数组暴露的是 length 字段,字符串提供的是 length() 方法。
用循环处理数组
数组经常和循环一起使用:
java
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}循环条件使用 < scores.length,不是 <= scores.length,因为最后一个合法下标是 scores.length - 1。
如果只需要读取值,不需要下标,可以使用增强 for 循环:
java
for (int score : scores) {
System.out.println(score);
}需要修改元素或使用位置时,用下标循环。只需要读取每个值时,用增强 for 循环更简洁。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...