Phi*_*son 2 java foreach loops
由于增强的 for 循环是只读的,似乎每个元素都被复制到您在设置循环时定义的新变量中。这里有隐含的声明吗?也许是这样的:
int[] numbers = {1, 2, 3};
for(int number : numbers){
numbers = numbers[i]; // Implicit statement? Problem: the i variable does not exist.
// Do stuff...
}
Run Code Online (Sandbox Code Playgroud)
是的,确切地说,增强for循环的处理在块内创建了一个局部变量。根据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 }
(如果循环的目标是Iterable数组而不是数组,则略有不同,但相似。)
将其应用于您的循环:
int[] numbers = {1, 2, 3};
for (int i = 0; i < numbers.length; i++) {
int number = numbers[i];
// Do stuff...
}
Run Code Online (Sandbox Code Playgroud)
该i变量(如上市#i在规范中)是不是您可以访问,但它的存在的字节码。
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |