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); } }