首页 >Java >java教程 >为什么修改 Java For-Each 循环中的迭代变量不会更改原始数组?

为什么修改 Java For-Each 循环中的迭代变量不会更改原始数组?

Barbara Streisand
Barbara Streisand原创
2024-12-26 12:11:13834浏览

Why Doesn't Modifying the Iteration Variable in a Java For-Each Loop Change the Original Array?

Foreach 循环中的迭代变量赋值

在 Java 中,foreach 循环提供了一种用于迭代集合的简洁语法。然而,当修改循环内的迭代变量时,会出现一个常见的误解。考虑以下代码:

String boss = "boss";
char[] array = boss.toCharArray();

for(char c : array) {
    if (c == 'o')
        c = 'a';
}

System.out.println(new String(array)); // Prints "boss"

为什么此代码打印“boss”而不是预期的“bass”?

要理解此行为,认识到 foreach 循环的操作至关重要集合元素的副本,而不是元素本身。迭代变量(在本例中为 c)只是数组中当前元素的本地副本。修改 c 不会修改数组中的原始字符。

要修改数组元素,必须通过索引显式访问元素,如下所示:

for (int i = 0; i < array.length; i++) {
    if (array[i] == 'o') {
        array[i] = 'a';
    }
}

此代码分配直接将修改字符修改为数组元素,从而得到所需的“bass”输出。

总之,在使用 foreach 循环时,请记住迭代变量表示局部变量集合元素的副本。要修改底层数据,请通过其索引显式访问元素并直接在数组上执行修改。

以上是为什么修改 Java For-Each 循环中的迭代变量不会更改原始数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn