1. 程式人生 > >為什麼陣列沒有實現Iterable介面,但可以使用foreach語句遍歷?

為什麼陣列沒有實現Iterable介面,但可以使用foreach語句遍歷?

在Java中,對於陣列為什麼能夠使用foreach語句一直感覺很困惑。

對於能夠使用foreach語句進行遍歷的物件,只有兩種情況,其中一種是遍歷物件必須實現Iterable介面,實現ierator()方法,這是物件使用foreach語句的前提。另外一種情況就是特殊物件陣列。那麼對於陣列可以使用foreach該如何去理解呢?

首先需要說明的是,實現了java.lang.Iterable介面的物件可以用for-each去遍歷,但是能用for-each去遍歷的不一定實現了該介面,比如陣列這個特殊物件就是這一特殊情況。但是網上關於這方面的資料很少,自己只能說下自己的理解。

我認為陣列物件之所以能夠使用foreach語句進行遍歷元素,是因為JVM在底層將對於陣列的foreach迴圈轉換為對於這個陣列每一個的迴圈引用

。類似在底層轉化成了普通的for語句一樣,得以保證我們使用foreach語句時候能夠正確的進行遍歷。