我正在做一个涉及董事会的任务。基本代码给了我们修改,但是我不明白:
for()的参数中的什么意思。它是否通过所有板(ArrayList
)?
private ArrayList<MovingElement> moveElems = new ArrayList<MovingElement>();
for (MovingElement mElement : moveElems) {
mElement.step();
}
我正在做一个涉及董事会的任务。基本代码给了我们修改,但是我不明白:
for()的参数中的什么意思。它是否通过所有板(ArrayList
)?
private ArrayList<MovingElement> moveElems = new ArrayList<MovingElement>();
for (MovingElement mElement : moveElems) {
mElement.step();
}
这是一种特殊形式的for
循环,用于遍历数组和 any Iterable
,其中包括 any Collection
。
这被称为for-each循环,如:for each element of a list。
阅读:for (MovingElement mElement : moveElems)
as _for each MovingElement
in the collection moveElems_
。
请参阅:For-Each 循环。
可以这样想:
for (MovingElement mElement : moveElems) {
// translates into English like this:
// for EACH MovingElement object in the ArrayList moveElems,
// do the following code:
mElement.step();
}
它是一个 for each 循环。
这是一个简单的 foreach 循环,它将遍历给定数组中的每个元素。
在这种情况下,MovingElement 将是数组的类型,mElement 将是当前元素,moveElems 将是实际数组。
“:”仅在两个部分之间分隔
因此,在您的情况下,循环将遍历 ArrayList 中的每个元素并使用它的 step() 方法。
这在 Java 中称为 foreach 或增强的 for 循环。char将':'
迭代变量类型/名称与要遍历的对象分开。
这是一个解释其使用的小教程,知道它是在 Java 语言的 1.5 版中引入的,这很有用。它是语法糖,可以通过使用标准 for 循环和/或使用迭代器来实现相同的迭代行为。
foreach 循环可用于遍历数组中的元素,或遍历实现Iterable接口的对象(通常是集合)。
仅供参考,foreach 语句在 Java 语言规范的第14.14.2节中定义。
这是 Java 的“for each”语法。它或多或少等同于:
Iterator<MovingElement> iter = moveElems.iterator();
while (iter.hasNext()) {
iter.next().step();
}
For-each 循环旨在简化最常见的迭代形式,其中迭代器或索引仅用于迭代,而不用于任何其他类型的操作。
http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
-你刚刚遇到的是一个被称为扩展 for-loop 或更着名的 for-each 循环。
for( DataType variable : Iterable )
例如:
for( String variable : arr )
arr
-可以是字符串类型的数组或集合(即 Iterables)
s
-将在每次迭代中获取 arr 的每个值并将其分配给 s