爲什麼在java中引入這個循環?它是一個Java創建嗎?它的目的是什麼(增加內存/ CPU利用率)?foreach循環java創建?
回答
爲什麼在java中引入這個循環?
這只是爲了緩解對泛型集合和數組的循環。取而代之的
for (int i = 0; i < strings.length; i++) {
String string = strings[i];
// ...
}
你可以做
for (String string : strings) {
// ...
}
這使得代碼更易讀,更好維護。
它是一個Java的創造?
不,它早在Java之前就存在於其他語言中。 Java在實現它時相對較晚。
它的用途是什麼?
查看第一個答案。
要了解更多信息,請查看Sun guide on the subject。
更新:這並不意味着它會使其他類型的循環變得多餘。 for循環使用索引仍然有用,如果你想維護一個循環計數器用於其他目的而不是按索引獲取項目。如果您想在循環中刪除或更改集合本身的元素,則使用迭代器的for循環仍然很有用。
請參閱Foreach:
對於每一個(或的foreach)是在 集合遍歷項計算機 語言成語。 Foreach通常用 代替語句標準。 不像其他的循環結構, 然而,foreach循環1通常 保持無明顯的計數器:他們 本質上說,「這樣做是爲了在這個集合一切 」,而不是「做X 倍」。這避免了潛在的 逐個錯誤,並使代碼 更易於閱讀。在面向對象的 語言中,迭代器(即使是隱式的)通常被用作遍歷的手段 。
幾種語言,包括Python, 只有一個foreach循環,需要 顯式計數才能實現 行爲的「標準」。
而具體上的Java的部分:
一個foreach構建體在JDK 5.0中引入的。官方消息來源爲該構造使用了多個名稱。它被稱爲「For循環增強」,「For-Each循環」和「foreach語句」。
它掩蓋了迭代器的使用,它使用起來沉重笨拙。有很多很多的實例,你只是想迭代一個集合而沒有處理它的索引。 java的foreach結構使這成爲可能。
這真的只是Java模仿功能性構造的時間更長,it's called map。實現它的原因是,製作一個循環只是簡單地對容器的每個元素執行一個操作,而不考慮其索引。 Java的for(element : container) { doSomethingWith(element); }
語法正是這樣做比替代方案,它們要麼做一個for循環與索引
for(int i=0; i<container.size(); ++i) { doSomethingWith(container.at(i)); }
哪個更長,並創建一個不必要的指標變量,或者做一個循環清潔的方式迭代器
Iterator it = container.iterator();
while(it.hasNext()) { doSomethingWith(it.next()); }
這也是更長。這個循環基本上是for(:) {}
循環被編譯成的東西,儘管可能會有一些細微的差別(我沒有真正看到字節碼)。
+1小寫錯別字;如果不正確,則還原。另見http://java.sun.com/javase/6/docs/api/java/lang/Iterable.html – trashgod 2010-03-25 20:19:59
這是平淡的「語法糖」
不認爲有任何效率的提高。
Java社區希望有點現代化的語言,C#和Ruby的競爭..
- 1. 創建foreach循環
- 2. 的foreach循環foreach循環中(Java)的
- 3. Java pathing foreach循環
- 4. FOREACH foreach循環內循環
- 5. 使用foreach循環創建JSON文檔
- 6. 創建foreach循環(空物體)
- 7. 從foreach循環中創建錶行嗎?
- 8. TYPO3創建一個foreach循環
- 9. 創建一個鍵/值對foreach循環
- 10. 從foreach循環創建多個變量
- 11. 在foreach循環中創建Bootstrap Accordion
- 12. 在foreach循環中創建多個DropDownListFor
- 13. 如何創建一個foreach循環?
- 14. 在foreach循環中創建對象
- 15. 從JSON數組創建foreach循環
- 16. XSLT 1.0如何創建foreach循環
- 17. for循環內的foreach循環java
- 18. 從循環創建表(java)
- 19. JAVA:創建菜單循環
- 20. 創建一個要在foreach循環中使用的類型。 Java
- 21. 在while循環和foreach循環中創建JSON php
- 22. 嵌套foreach循環的Java
- 23. Java速度foreach循環
- 24. Java掛在foreach循環上
- 25. 在foreach循環內的foreach循環
- 26. Foreach vs for循環在C#中。新對象的創建,可以在循環,但不可能在foreach循環
- 27. PHP foreach循環外循環
- 28. Foreach循環循環兩次
- 29. Foreach循環循環太多
- 30. For循環vs Foreach循環
額外的重點應放在對事實口罩迭代器。諸如從列表中移除項目可以安全地用迭代器完成的操作在foreach循環中無法安全地完成。 – TwentyMiles 2010-03-25 18:04:42