文章詳情頁
java - For-Each能夠遍歷數(shù)組(Array)的原理是什么?
瀏覽:140日期:2024-01-07 10:12:40
問題描述
比如這樣一個(gè)例子...
Egg[] eggs = {new Egg(), new Egg()};for (Egg egg : eggs) { egg.eat();}
自己嘗試了一下,冒號后面的對象只要不是數(shù)組或者Iterable對象,都是會報(bào)出編譯錯(cuò)誤。Can only iterate over an array or an instance of java.lang.Iterable
然后我通過調(diào)試發(fā)現(xiàn)For-Each實(shí)際上是不斷地調(diào)用迭代器的hasNext()和next()方法來實(shí)現(xiàn)對Collection類遍歷的。
那么遍歷數(shù)組的原理是什么呢?也是在JDK層面實(shí)現(xiàn)的嗎?
問題解答
回答1:是的,這只是一個(gè)語法糖罷了~ 能夠foreach的話必須要實(shí)現(xiàn)Iterable接口~
回答2:For-Each 能遍歷數(shù)組的原理是 JVM 在編譯的時(shí)候?qū)⑵浞g為了傳統(tǒng)的 For-Index 循環(huán),即:
for (int i = 0; i < arr.length; i++) {...}
這也是 JVM 為 Java 提供的一個(gè)語法糖。
標(biāo)簽:
java
相關(guān)文章:
1. angular.js - angular做點(diǎn)擊購買時(shí)的遮罩層2. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過程序添加)3. 冒昧問一下,我這php代碼哪里出錯(cuò)了???4. http://run.php.cn/在線PHP程序運(yùn)行結(jié)果不正確5. tp5 不同控制器中的變量調(diào)用問題6. 關(guān)于thinkphp 5.1中,ajax提交數(shù)據(jù)url的格式寫法,加花括號就出錯(cuò),請老師指點(diǎn)7. 模型的優(yōu)點(diǎn)8. 老師 我是一個(gè)沒有學(xué)過php語言的準(zhǔn)畢業(yè)生 我希望您能幫我一下9. 提示語法錯(cuò)誤語法錯(cuò)誤: unexpected ’abstract’ (T_ABSTRACT)10. Thinkphp5.1報(bào)錯(cuò)不支持Redis
排行榜

熱門標(biāo)簽