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

为什么在 Java For-Each 循环中分配给迭代变量不会更改原始数组?

Susan Sarandon
发布: 2024-12-29 08:59:10
原创
977 人浏览过

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

为什么迭代变量赋值失败

在 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", not "bass"
登录后复制

出乎意料的是,尽管循环中的“o”明显变为“a”,但输出仍然是“boss”。这种行为源于 foreach 循环的本质。

使用 foreach 时,迭代变量是数组元素的副本。分配给迭代变量仅修改副本,而不修改数组元素本身。要更新底层数组,需要显式修改:

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

此修改后的代码分配给实际的数组元素,确保将 'o' 修改为 'a'。

In总之,foreach 循环为迭代集合提供了便利,但对迭代变量的赋值仅影响本地副本。对于持久修改,需要显式数组索引。

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

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