for-each循环还可以遍历多维数组。但是要记住,在Java中多维数组包含数组的数组(例如,一个多维数组是一个一维数组的数组)。在多维数组上进行迭代时,理解这一点很重要,因为每次迭代都要获取下一个数组,而不是单个元素。另外,for循环中的迭代变量必须与所获取的数组类型保持兼容。例如,在二维数组中的情况,迭代变量必须是对一维数组的引用。通常,当使用for-each循环迭代N维数组时,所获取的对象是N-1维数组。如下面程序:
package com.kkoolerter.jdk;
public class ForEach_MultiDimensionArray {
public static void main(String[] args) {
int sum = 0;
int nums[][] = new int[3][5];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
nums[i][j] = (i + 1) * (j + 1);
}
}
for (int x[] : nums) {
for (int y : x) {
sum += y;
System.out.print(y + " ");
}
System.out.println();
}
System.out.println("sum=" + sum);
}
}
程序输出的结果如下:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
sum=90
该程序中,特别要注意该行:
for (int x[] : nums)
注意x是如何声明的:它是对一个一维整数数组的引用。这是必须的,因为for的每次迭代都要获取nums中的下一个数组(第一个获取的由nums[0]所指定的),然后内部的for循环在这些数组中的每个元素间循环,显示每个元素的值。
package com.kkoolerter.jdk;
public class ForEach_MultiDimensionArray {
public static void main(String[] args) {
int sum = 0;
int nums[][] = new int[3][5];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
nums[i][j] = (i + 1) * (j + 1);
}
}
for (int x[] : nums) {
for (int y : x) {
sum += y;
System.out.print(y + " ");
}
System.out.println();
}
System.out.println("sum=" + sum);
}
}
程序输出的结果如下:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
sum=90
该程序中,特别要注意该行:
for (int x[] : nums)
注意x是如何声明的:它是对一个一维整数数组的引用。这是必须的,因为for的每次迭代都要获取nums中的下一个数组(第一个获取的由nums[0]所指定的),然后内部的for循环在这些数组中的每个元素间循环,显示每个元素的值。
转载于:https://blog.51cto.com/wujuxiang/406797