当前位置:首页 > 后端开发 > 正文

Java如何遍历数组并赋值?

使用for循环遍历数组索引,通过索引为每个元素赋值,示例代码:for (int i=0; i

在Java中,遍历数组并赋值是基础且高频的操作,本文详细讲解6种实现方法,涵盖传统循环到现代API,并提供场景建议和避坑指南。


基础遍历方法

标准for循环

直接通过索引访问并修改元素,效率最高且最灵活。

int[] arr = new int[5]; for (int i = 0; i < arr.length; i++) { arr[i] = i * 2; // 赋值:0, 2, 4, 6, 8 }

while循环

适合动态控制遍历条件,需手动管理索引:

Java如何遍历数组并赋值? 第1张

高级遍历与工具类

Arrays.fill()统一赋值

快速填充相同值(适合初始化):

import java.util.Arrays; int[] arr = new int[5]; Arrays.fill(arr, 10); // 所有元素赋值为10

Arrays.setAll()动态赋值(Java 8+)

通过函数生成值(灵活且简洁):

import java.util.Arrays; int[] arr = new int[5]; Arrays.setAll(arr, index -> index * 3); // 赋值:0, 3, 6, 9, 12

Stream API处理(Java 8+)

函数式编程风格(适合复杂转换):

Java如何遍历数组并赋值? 第2张

对象数组的遍历赋值

对象数组需注意引用独立性:

class User { String name; User(String name) { this.name = name; } } User[] users = new User[3]; // 正确:创建新对象赋值 for (int i = 0; i < users.length; i++) { users[i] = new User("User" + i); } // 错误示例:引用共享问题 User temp = new User("Tom"); for (User u : users) { u = temp; // 无效操作!无法修改数组元素 }


避坑指南

  1. 索引越界(ArrayIndexOutOfBoundsException)

    • 错误:for (int i=0; i<=arr.length; i++)
    • 正确:索引范围应为 [0, length-1]。
  2. 增强for循环(foreach)的局限性

    Java如何遍历数组并赋值? 第3张

    for (int num : arr) { num = 10; // 修改的是临时变量,不影响原数组 }

    原因:num是数组元素的拷贝(基本类型)或引用的拷贝(对象类型),无法直接修改数组。

  3. 空指针风险

    未初始化的数组直接遍历会抛出NullPointerException:

    int[] arr = null; for (int i=0; i<arr.length; i++) { ... } // 崩溃!

  4. 方法对比与选型建议

    方法 适用场景 效率 灵活性
    for循环 通用场景,需索引操作
    Arrays.fill() 统一初始值
    Arrays.setAll() 动态生成值(Java 8+)
    Stream API 复杂转换或并行处理(大数据量)
    while循环 非固定步长的遍历

    最佳实践

    • 小数组或需索引操作 → 优先选for循环
    • 统一初始值 → Arrays.fill()
    • Java 8+动态赋值 → Arrays.setAll()
    • 复杂链式处理 → Stream API


    • 基础操作:for循环是核心,掌握索引控制和边界条件。
    • 高效工具:Arrays.fill()和Arrays.setAll()简化代码。
    • 现代开发:Java 8的Stream API适合函数式处理。
    • 关键点:避免索引越界,理解值传递与引用传递的区别。

    引用说明:

    本文代码基于Oracle官方Java 17规范验证,遵循《Java核心技术卷I》数组操作规范,避坑指南参考实际开发中的常见错误案例。

0