gpt4 book ai didi

java - 在 foreach 循环中使用最终变量如何工作

转载 作者:行者123 更新时间:2023-12-03 20:22:39 25 4
gpt4 key购买 nike

考虑这段代码

public static void main(String[] args) {
for(final String s : Arrays.asList("a","b","c")){
System.out.println(s);
}
}

此代码不用于特定目的,而是用于演示 final 的用法。 foreach-loop变量。

这是如何运作的 ?单个变量怎么可能是 final但它在每个循环中都被分配了不同的值。或者这个变量是在不同的 scopes\stacks 中多次声明的?

最佳答案

这在 Java 语言规范 (JLS) 中进行了解释,14.14.2 :

The enhanced for statement has the form:

EnhancedForStatement:
for ( FormalParameter : Expression ) Statement

FormalParameter:
VariableModifiers_opt Type VariableDeclaratorId

VariableDeclaratorId:
Identifier
VariableDeclaratorId []

...

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

for (I #i = Expression.iterator(); #i.hasNext(); ) {
VariableModifiers_opt TargetType Identifier =
(TargetType) #i.next();
Statement
}


因此, Identifier在循环的每次迭代中重新声明。

关于java - 在 foreach 循环中使用最终变量如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840395/

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