alq*_*een 3 java foreach loops
谁能告诉我,它为什么有效?
int[] ints = {1,2,3};
for(int i : ints) {
System.out.println(i); i = 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以将0设置为i,但它仍然会迭代?
因为i该循环中不是控制变量,所以它只是数组中的一个值.根据JLS§14.4.2,对于数组,增强型for循环等效于:
增强的for语句相当于表单的基本for语句:
...
Run Code Online (Sandbox Code Playgroud)for (int #i = 0; #i < #a.length; #i++) { {VariableModifier} TargetType Identifier = #a[#i]; Statement }
所以将它应用于你的循环:
int[] ints = {1,2,3};
for (int index = 0; index < ints.length; index++) {
int i = ints[index];
System.out.println(i);
i = 0;
}
Run Code Online (Sandbox Code Playgroud)
i在这种情况下,它不是循环的索引,它是数组当前元素的值.因此,更改它不会影响迭代.
它相当于:
int[] ints = {1,2,3};
for (int index = 0; index < ints.length; index++) {
int i = ints[index];
System.out.println(i);
i = 0;
}
Run Code Online (Sandbox Code Playgroud)