2014-10-27 80 views

回答

1

因爲這是增強的for語句在jls-14.14.2中定義的方式。

具體來說:

增強的for語句等價於一個基本爲形式的語句:

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

你能解釋一下嗎 – 2014-10-27 16:31:52

+0

@NiravsinhParmar你還想知道什麼?當你想遍歷數組或Iterable時,「for-each」循環只是語法糖。 Javadoc的[API中的鏈接](http://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html)更詳細地介紹了提供它的基本原理,如果這就是你之後。基本上,任何時候你不需要直接訪問迭代器,就使用for-each。 – azurefrog 2014-10-27 16:40:37

+0

所以這意味着編譯器會處理所有這些問題 – 2014-10-27 16:55:15

0

這就是基於語言規範的JVM實現。例如,布爾是if語句的目標。

+1

JVM與它沒有多大關係。 – aioobe 2014-10-27 15:07:54

+0

比這背後的真正原因是什麼 – 2014-10-27 16:35:36

0

您使用的詞語實施Iterator接口允許一個對象是「foreach」聲明的目標聽起來像你已經閱讀Java Doc - Interface Iterable

那麼,爲什麼你沒有按照提到的鏈接The For-Each Loop?那裏給出了一個很好的解釋。