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

回到顶部