在 Java 中,数组是一种在单个结构里存储多个同类型值的方式。 与其他数据结构不同,数组一旦创建,大小就固定了。 可以用下标给数组中的元素赋值,也可以用它从数组中取值。 Java 数组使用从 0 开始的下标:第一个元素的下标是 0,第二个元素的下标是 1,依此类推。
下面是初始化数组的标准语法:
type[] variableName = new type[size];
type 是数组中元素的类型,既可以是基本类型(例如int),也可以是类(例如String)。
size 是这个数组能容纳的元素个数(之后无法更改)。
数组创建后,元素会被初始化为各自的默认值(通常是0、false或null)。
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
也可以用一种简写形式来定义数组,它让你在创建数组的同时设置它的值:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
因为编译器现在能看出数组会有多少个元素,所以可以省略长度。
可以使用带方括号的下标写法给数组元素赋值和读取它们的值:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
访问数组有效下标范围之外的下标会抛出 IndexOutOfBoundsException。
可以通过调用数组实例的方法或属性来操作数组,也可以使用 Arrays 类中定义的静态方法(通常只在泛型代码中使用)。
length 属性保存数组的长度。
可以这样访问它:
int arrayLength = someArray.length;
Java 还提供了一个很实用的工具类 java.util.Arrays,它包含许多与数组相关的方法(例如Arrays.equals)。
Java 也支持多维数组,例如 int[][] arr = new int[3][4];,它们非常有用。
数组同时也是一种_集合_,这意味着除了通过下标访问值之外,你还可以用 for-each 循环迭代它的_所有_值:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
如果你想更精确地控制迭代哪些值,可以使用 for 循环:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei