How does a for-each loop work?
本问题已经有最佳答案,请猛点这里访问。
for-each循环在调用方法时是如何工作的,无论是递归还是不同的方法?
例:
1 2 3 4 5 6 | for(String permutation : permute(remaining)) { // Concatenate the first character with the permutations of the remaining chars set.add(chars.charAt(i) + permutation); } |
顺便说一下,方法permute接受一个String并返回一个set。
谢谢。
根据
1 |
执行如下:
1 2 3 4 5 | for (I #i = Expression.iterator(); #i.hasNext(); ) { VariableModifiersopt TargetType Identifier = (TargetType) #i.next(); Statement } |
因此,
调用它一次,存储结果,做foreach。
像这样:
1 2 3 4 |
编辑:如果这是递归的,它确实没有区别。每一层递归都只有自己的范围,因此它自己的"临时"变量。因此,置换函数将递归到最低级别,然后每个较高级别将连续地执行其完全独立的
如果我们编译这个测试
1 2 3 4 5 6 7 |
并使用JAD反编译Test.class,我们将看到使用此代码替换了每个javac
1 2 3 4 |
在您的示例中,在进入循环之前评估
一个更简单的例子是这样的:
1 | while(input.hasNext()) |
这是你可以在无限数量读取的项目中看到的东西。必须先评估表达式
Foreach循环适用于任何实现