Java 数组

Java 数组

数组用于在单个变量中存储多个值,而不是为每个值声明单独的变量。

如需声明数组,请使用方括号定义变量类型:

String[] cars;

我们现在已经声明了一个包含字符串数组的变量。

如需向其插入值,我们可以使用数组字面量 - 将值放在大括号内逗号分隔的列表中:

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

如需创建整数数组,您可以这样写:

int[] myNum = {10, 20, 30, 40};

访问数组的元素

您可以通过引用索引号(下标)来访问数组元素。

这条语句访问 cars 中第一个元素的值:

实例

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
System.out.println(cars[0]);
// 输出 Volvo

亲自试一试

注释:数组索引从 0 开始:[0] 是第一个元素。[1] 是第二个元素,以此类推。

更改数组元素

如需更改特定元素的值,请引用索引号:

实例

cars[0] = "Tesla";

实例

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars[0] = "Tesla";
System.out.println(cars[0]);
// 现在输出的是 Tesla 而不是 Volvo

亲自试一试

数组长度

如需找出数组有多少个元素,请使用 length 属性:

实例

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
System.out.println(cars.length);
// 输出 4

亲自试一试

遍历数组

您可以使用 for 循环遍历数组元素,并使用 length 属性指定循环应运行的次数。

下例输出 cars 数组中的所有元素:

实例

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (int i = 0; i < cars.length; i++) {
  System.out.println(cars[i]);
}

亲自试一试

使用 For-Each 遍历数组

还有一个 “for-each” 循环,专门用于遍历数组中的元素:

语法

for (type variable : arrayname) {
  ...
}

下例使用 "for-each" 循环输出 cars 数组中的所有元素:

实例

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (String i : cars) {
  System.out.println(i);
}

亲自试一试

上面的例子可以这样读:对于 cars 中的每个 String 元素(称为 i),打印出 i 的值。

如果比较 for 循环和 for-each 循环,您会发现 for-each 方法更易写,无需计数器(不使用 length 属性),更具可读性。

实际生活中的例子

为了展示数组的实际应用,我们来创建一个程序,计算不同年龄的平均值:

实例

// 存储不同年龄的数组
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
 
float avg, sum = 0;
 
// 获取数组的长度
int length = ages.length;
 
// 遍历数组的元素
for (int age : ages) {
  sum += age;
}
 
// 通过将总和除以长度来计算平均值
avg = sum / length;
 
// 打印平均值
System.out.println("平均年龄是: " + avg);

亲自试一试

在这个例子中,我们还创建了一个程序,用于找出不同年龄中的最小年龄:

实例

// 存储不同年龄的数组
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
 
// 获取数组的长度
int length = ages.length;
 
// 创建一个'最小年龄'变量,并将 ages 数组的第一个元素赋值给它
int lowestAge = ages[0];
 
// 遍历 ages 数组的元素以找到最小年龄
for (int age : ages) {
  // 检查当前年龄是否小于当前的'最小年龄'
  if (lowestAge > age) {
    // 如果找到了更小的年龄,则用该元素更新'最小年龄'
    lowestAge = age;
  }
}
 
// 输出最小年龄的值
System.out.println("数组中的最小年龄是: " + lowestAge);

亲自试一试

多维数组

多维数组是数组的数组。

当你想以表格形式(如带有行和列的表格)存储数据时,多维数组非常有用。

如需创建二维数组,请将每个数组添加到各自的花括号中:

实例

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };

myNumbers 现在是以两个数组为元素的数组。

访问元素

要访问 myNumbers 数组的元素,请指定两个索引:一个用于数组,另一个用于该数组内的元素。此例访问 myNumbers 的第二个数组 (1) 中的第三个元素 (2):

实例

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
int x = myNumbers[1][2];
System.out.println(x); // 输出 7

亲自试一试

请记住:数组索引从 0 开始:[0] 是第一个元素,[1] 是第二个元素,依此类推。

修改元素值

您还能修改元素的值:

实例

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
myNumbers[1][2] = 9;
System.out.println(myNumbers[1][2]); // 输出 9 而不是 7

亲自试一试

遍历多维数组

您也可以在一个for循环内部再使用另一个for循环来获取二维数组的元素(我们仍然需要指定两个索引):

实例

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < myNumbers.length; ++i) {
  for (int j = 0; j < myNumbers[i].length; ++j) {
    System.out.println(myNumbers[i][j]);
  }
}

亲自试一试

或者,您也可以使用 for-each 循环,这种循环方式通常被认为更易读易写:

实例

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };
for (int[] row : myNumbers) {
  for (int i : row) {
    System.out.println(i);
  }
}

亲自试一试