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

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

Barbara Streisand
发布: 2024-12-26 12:11:13
原创
758 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板