全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-09 5 分钟 ✍️ juanwangdev

数组的遍历

遍历数组是访问每个元素的基本操作。

for循环遍历

基本for循环

使用索引遍历,可读写元素。

Java
int[] arr = {1, 2, 3, 4, 5};

// for循环遍历
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

// 输出:1, 2, 3, 4, 5

使用索引修改元素

Java
int[] arr = {1, 2, 3, 4, 5};

// for循环可以修改元素
for (int i = 0; i < arr.length; i++) {
    arr[i] = arr[i] * 2;  // 每个元素乘2
}

// arr变为:{2, 4, 6, 8, 10}

倒序遍历

Java
int[] arr = {1, 2, 3, 4, 5};

// 从后往前遍历
for (int i = arr.length - 1; i >= 0; i--) {
    System.out.println(arr[i]);
}

// 输出:5, 4, 3, 2, 1

遍历部分元素

Java
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};

// 遍历前3个元素
for (int i = 0; i < 3; i++) {
    System.out.println(arr[i]);
}

// 遍历中间部分
for (int i = 2; i < 6; i++) {
    System.out.println(arr[i]);  // 输出第2-5个元素
}

增强for循环(for-each)

for-each语法

简化遍历语法,只读访问。

Java
int[] arr = {1, 2, 3, 4, 5};

// for-each遍历
for (int element : arr) {
    System.out.println(element);
}

// 输出:1, 2, 3, 4, 5

for-each特点

  • 语法简洁:for (类型 变量 : 数组)
  • 只读访问:不能修改原数组元素
  • 无需索引:自动遍历每个元素
Java
int[] arr = {1, 2, 3};

// for-each不能修改原数组
for (int num : arr) {
    num = num * 2;  // 只修改num变量,不影响arr
}

// arr仍是:{1, 2, 3}(未改变)

何时使用for-each

  • 只需读取元素时
  • 不需要索引信息时
  • 遍历整个数组时
Java
String[] names = {"张三", "李四", "王五"};

// 适合for-each:只读取
for (String name : names) {
    System.out.println(name);
}

while循环遍历

while遍历

Java
int[] arr = {1, 2, 3, 4, 5};

int i = 0;
while (i < arr.length) {
    System.out.println(arr[i]);
    i++;
}

do-while遍历

Java
int[] arr = {1, 2, 3, 4, 5};

int i = 0;
if (arr.length > 0) {  // 确保数组不为空
    do {
        System.out.println(arr[i]);
        i++;
    } while (i < arr.length);
}

遍历方式对比

for vs for-each对比

特性for循环for-each
索引访问有索引无索引
修改元素可以不能
部分遍历可以不支持
倒序遍历可以不支持
代码简洁度一般简洁
Java
int[] arr = {1, 2, 3, 4, 5};

// for循环:灵活,可修改
for (int i = 0; i < arr.length; i++) {
    arr[i] *= 2;  // 可修改
    System.out.println("索引" + i + ": " + arr[i]);  // 有索引
}

// for-each:简洁,只读
for (int num : arr) {
    System.out.println(num);  // 简洁
}

二维数组遍历

嵌套for循环

Java
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 嵌套for循环遍历
for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();  // 每行结束后换行
}

// 输出:
// 1 2 3
// 4 5 6
// 7 8 9

嵌套for-each

Java
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 嵌套for-each
for (int[] row : matrix) {
    for (int element : row) {
        System.out.print(element + " ");
    }
    System.out.println();
}

不规则二维数组遍历

Java
int[][] arr = {
    {1, 2},
    {3, 4, 5},
    {6, 7, 8, 9}
};

// 每行长度不同
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

Arrays工具类遍历

Arrays.toString输出

Java
import java.util.Arrays;

int[] arr = {1, 2, 3, 4, 5};

// 快速输出数组内容
System.out.println(Arrays.toString(arr));
// 输出:[1, 2, 3, 4, 5]

Arrays.deepToString二维数组

Java
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6}
};

System.out.println(Arrays.deepToString(matrix));
// 输出:[[1, 2, 3], [4, 5, 6]]

遍历应用示例

查找最大值

Java
int[] arr = {3, 7, 2, 9, 5};

int max = arr[0];
for (int i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
System.out.println("最大值: " + max);  // 9

查找元素位置

Java
int[] arr = {10, 20, 30, 40, 50};
int target = 30;

int index = -1;
for (int i = 0; i < arr.length; i++) {
    if (arr[i] == target) {
        index = i;
        break;  // 找到后退出
    }
}
System.out.println("位置: " + index);  // 2

求和统计

Java
int[] arr = {1, 2, 3, 4, 5};

int sum = 0;
for (int num : arr) {
    sum += num;
}
System.out.println("总和: " + sum);  // 15
System.out.println("平均: " + (sum / arr.length));  // 3

元素计数

Java
int[] arr = {1, 2, 3, 2, 4, 2, 5};
int target = 2;

int count = 0;
for (int num : arr) {
    if (num == target) {
        count++;
    }
}
System.out.println("出现次数: " + count);  // 3

遍历最佳实践

空数组检查

Java
int[] arr = null;

// 安全遍历
if (arr != null && arr.length > 0) {
    for (int num : arr) {
        System.out.println(num);
    }
}

选择合适方式

Java
// 只读:for-each简洁
for (int num : arr) {
    System.out.println(num);
}

// 需修改/索引:for循环
for (int i = 0; i < arr.length; i++) {
    arr[i] *= 2;
    System.out.println("索引" + i);
}

// 快速输出:Arrays.toString
System.out.println(Arrays.toString(arr));

要点总结

  • for循环:有索引,可修改,支持部分/倒序遍历
  • for-each:无索引,只读,简洁
  • while循环:灵活控制遍历条件
  • 二维数组使用嵌套循环遍历
  • Arrays.toString快速输出数组内容
  • Arrays.deepToString输出二维数组
  • 需修改元素用for循环
  • 只读遍历用for-each
  • 需要索引信息用for循环
  • 遍历前检查数组是否为null或空

📝 发现内容有误?点击此处直接编辑

← 上一篇 数组的常见操作(排序、查找)
下一篇 → 方法的参数传递
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库