Java 为什么foreach语句不更改元素值?
下面的印刷品为什么是老板而不是低音?
String boss = "boss";char[] array = boss.toCharArray();
for(char c : array)
{
if (c== 'o')
c = 'a';
}
System.out.println(new String(array)); //How come this does NOT print out bass?It prints boss.
回答:
你正在更改迭代变量c
。那不会改变数组的内容。迭代变量只是数组元素的副本。如果要修改数组,则需要显式修改:
for (int i = 0; i < array.length; i++) { if (array[i] == 'o') {
array[i] = 'a';
}
}
你的原始代码等效于(按照JLS的14.14.2节):
for (int i = 0; i < array.length; i++) { char c = array[i];
if (c == 'o') {
c = 'a';
}
}
更改局部变量的值将永远不会更改任何其他内容,它只会更改局部变量。那作业:
char c = array[i];
将数组中的值复制到局部变量中。它不会将本地变量与数组元素永久关联。
以上是 Java 为什么foreach语句不更改元素值? 的全部内容, 来源链接: utcz.com/qa/421118.html