You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java OCA备考:二维数组的for与for-each循环遍历方法咨询

嘿,刚好在准备OCA考试的话,多维数组遍历确实是容易踩坑的点,尤其是你给的这种不规则二维数组(每行长度不一样),我把所有能用for循环和for-each循环的遍历方式都给你理清楚,顺便补点考试要注意的细节:

先明确咱们要遍历的数组:

int[][] matrix = {{3,4,5},{6,7,8},{9},{10,11,12}};

遍历方式汇总

1. 外层for-each + 内层普通for循环

这是你已经掌握的第一种方式,适合需要用到列索引的场景(比如修改元素、获取元素位置):

for (int[] row : matrix) {
    for (int i = 0; i < row.length; i++) {
        // 这里写你的业务代码,比如打印或修改元素
        System.out.print(row[i] + " ");
    }
}

2. 双层for-each循环

这是最简洁的遍历写法,只需要读取元素值的时候非常好用,也是OCA考试的高频考点:

for (int[] row : matrix) {
    for (int num : row) {
        System.out.print(num + " ");
    }
}

⚠️ 注意:for-each拿到的是元素的副本,没法直接修改数组里的元素值,如果要修改必须用索引操作。

3. 双层普通for循环(你没写完的那种)

这种方式需要严格控制行和列的索引,尤其要注意内层循环的终止条件是当前行的长度,不能用固定值(比如matrix[0].length),否则会抛出ArrayIndexOutOfBoundsException:

for (int i = 0; i < matrix.length; i++) {
    // 关键:用matrix[i].length而不是固定长度
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
}

4. 外层普通for倒序 + 内层for-each

如果需要从最后一行开始遍历,可以这么写:

for (int i = matrix.length - 1; i >= 0; i--) {
    for (int num : matrix[i]) {
        System.out.print(num + " ");
    }
}

5. 外层for-each + 内层普通for倒序

正常遍历每一行,但从该行的最后一个元素往前读:

for (int[] row : matrix) {
    for (int i = row.length - 1; i >= 0; i--) {
        System.out.print(row[i] + " ");
    }
}

6. 双层普通for倒序遍历

行和列都倒序遍历,适合需要反向读取整个数组的场景:

for (int i = matrix.length - 1; i >= 0; i--) {
    for (int j = matrix[i].length - 1; j >= 0; j--) {
        System.out.print(matrix[i][j] + " ");
    }
}

OCA考试相关注意点

  • 不规则二维数组的内层循环必须用当前行的长度(row.length或matrix[i].length),这是考试里经常出的陷阱题。
  • for-each循环不能用于修改数组元素的原值,只能读取;如果要修改元素,必须用普通for循环通过索引操作。
  • 多维数组本质上是“数组的数组”,所以外层遍历的每一个元素都是一个一维数组,这点要牢记。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:44:58