Java:Foreach循环在int数组上没有按预期工作?

jel*_*ish 6 java arrays foreach loops

我有一个非常简单的循环:

int[] positions = {1, 0, 0}

//print content of positions

for (int i : positions)
{
    if (i <= 0) i = -1;
}

//print content of positions
Run Code Online (Sandbox Code Playgroud)

现在,我期望获得的是:

array: 1, 0, 0
array: 1, -1, -1
Run Code Online (Sandbox Code Playgroud)

但我得到了

array: 1, 0, 0
array: 1, 0, 0
Run Code Online (Sandbox Code Playgroud)

只是......为什么?

亲切的问候,水母

Łuk*_*nik 19

因为" i"是数组元素的副本而不是对它的引用:)您修改局部变量,而不是数组的元素

这段代码相当于

for(int index = 0; index < array.length; index++) {

int i = array[index];
...
}
Run Code Online (Sandbox Code Playgroud)