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循环在这些数组中的每个元素间循环,显示每个元素的值。