gpt4 book ai didi

java - Java 增强 for 循环中的隐式语句

转载 作者:行者123 更新时间:2023-11-29 08:25:30 28 4
gpt4 key购买 nike

由于增强的 for 循环是只读的,因此似乎每个元素都被复制到您在设置循环时定义的新变量中。这里有隐含的说法吗?也许是这样的:

int[] numbers = {1, 2, 3};
for(int number : numbers){
numbers = numbers[i]; // Implicit statement? Problem: the i variable does not exist.
// Do stuff...
}

最佳答案

是的,确实如此,增强的 for 循环处理会在 block 内创建一个局部变量。每JLS§14.4.2 ,对于数组,增强的 for 循环相当于:

The enhanced for statement is equivalent to a basic for statement of the form:

...

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...
}

您无法访问 i 变量(在规范中列为 #i),但它存在于字节码中。

关于java - Java 增强 for 循环中的隐式语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558419/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com