我已經看到了創建一個「List」對象類型後使用FOR循環的不同方法。這是什麼動態循環在java
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
我不明白這個FOR循環是如何工作的。
感謝
我已經看到了創建一個「List」對象類型後使用FOR循環的不同方法。這是什麼動態循環在java
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
我不明白這個FOR循環是如何工作的。
感謝
增強的for循環可與任何使用實現Iterable<X>
和數組的對象。它等同於使用for循環與一個迭代(在迭代的情況下):
// with Iterables:
Iterable<String> iterableStrings = getListOfStrings();
// standard for loop
for (Iterator<String> it = iterableStrings.iterator(); it.hasNext();) {
String s = it.next();
System.out.println(s);
}
// enhanced for loop
for (String s : iterableStrings) {
System.out.println(s);
}
// with arrays:
String[] stringArray = getStringArray();
// standard for loop
for (int i = 0; i < stringArray.length; i++) {
String s = stringArray[i];
System.out.println(s);
}
// enhanced for loop
for (String s : stringArray) {
System.out.println(s);
}
它的使用是不限於「索引的集合」像列表和數組。
參考
這就是所謂的enhanced for-loop/For-Each construct。在java 1.5中引入。它首先被引入來迭代集合和數組。
此:
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
是相同
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (int i=0; i<focuses.size(); i++) {
my_string += focuses.get(i);
}
注意,但是,你只能使用for-each循環對於那些實施Iterable interface對象。
實現此接口允許對象成爲「foreach」語句的目標。
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
當你看到冒號(:)「在」讀它上面的循環讀作「每個在list_obj_x重點OBJ1。」正如你所看到的,for-each結構精美的結合與泛型。它保留了所有類型的安全性,同時消除了剩餘的雜波。因爲您不必聲明迭代器,所以不必爲其提供通用聲明。 (編譯器爲您完成此你背後,但你不必用它關心自己)
,相等於上述每個循環是:
for (int i =0 ; i< list_obj_x.size(); i++) {
my_string += list_obj_x.get(i);
}
我想不明白,如果* *它的工作...什麼是'list_obj_x',除了是內容違反命名約定一個變量名? – 2013-02-15 16:29:42
該代碼不起作用。因爲我想知道FOR循環的工作方式或FOR循環的名稱。 – 2013-02-15 16:44:06
很多東西都不起作用。例如,您不能將「Focus」的實例追加到字符串中。 (應該是'my_string + = obj1.toString()'或類似的東西) – 2013-02-15 16:47:06