https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14 
你可以看 14.14.2 部分,有提到: 
 
如果被遍历的是 Iterable 的子类则编译成下面这种: 
- for (I #i = Expression.iterator(); #i.hasNext(); ) {
 
 -     {VariableModifier} TargetType Identifier =
 
 -         (TargetType) #i.next();
 
 -     Statement
 
 - }
 
  复制代码 
如果是数组则编译成下面这种: 
- for (int #i = 0; #i < #a.length; #i++) {
 
 -     {VariableModifier} TargetType Identifier = #a[#i];
 
 -     Statement
 
 - }
 
  复制代码 |