文章詳情頁
java - For-Each能夠遍歷數(shù)組(Array)的原理是什么?
瀏覽:153日期:2024-01-07 10:12:40
問題描述
比如這樣一個例子...
Egg[] eggs = {new Egg(), new Egg()};for (Egg egg : eggs) { egg.eat();}
自己嘗試了一下,冒號后面的對象只要不是數(shù)組或者Iterable對象,都是會報出編譯錯誤。Can only iterate over an array or an instance of java.lang.Iterable
然后我通過調(diào)試發(fā)現(xiàn)For-Each實際上是不斷地調(diào)用迭代器的hasNext()和next()方法來實現(xiàn)對Collection類遍歷的。
那么遍歷數(shù)組的原理是什么呢?也是在JDK層面實現(xiàn)的嗎?
問題解答
回答1:是的,這只是一個語法糖罷了~ 能夠foreach的話必須要實現(xiàn)Iterable接口~
回答2:For-Each 能遍歷數(shù)組的原理是 JVM 在編譯的時候?qū)⑵浞g為了傳統(tǒng)的 For-Index 循環(huán),即:
for (int i = 0; i < arr.length; i++) {...}
這也是 JVM 為 Java 提供的一個語法糖。
標(biāo)簽:
java
相關(guān)文章:
1. 老師您的微信號是多少?2. javascript - 微信網(wǎng)頁開發(fā)從菜單進(jìn)入頁面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當(dāng)前頁面,求解決?3. node.js - nodejs開發(fā)中常用的連接mysql的庫4. 在html文件的目錄下輸入代碼按回車后顯示這個,哪位大佬幫幫我 呀5. mysql - jdbc的問題6. mysql replace 死鎖7. 視頻文件不能播放,怎么辦?8. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. windows7 ping不通虛擬機VMware上的linux(ubuntu)的ip10. mysql - 如何減少使用或者不用LEFT JOIN查詢?
排行榜

熱門標(biāo)簽