我正在做一个涉及板子的任务。基础代码已经给出,但我不理解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
循环,用于迭代数组和任何Iterable
,它包括任何Collection
。
这被称为for-each循环,如:对于列表的每个元素。
阅读:for (MovingElement mElement : moveElems)
解释为“对于集合moveElems
中的每个MovingElement
”。
参见: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();
}
这是一种简单的foreach循环,它将遍历给定数组中的每个元素。
在本例中,MovingElement将是数组的类型,mElement将是当前元素,moveElems将是实际的数组。
“:”仅分隔两个部分
因此,在您的情况下,该循环将遍历ArrayList中的每个元素并使用其step()方法。
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循环或更著名的for-each循环。
for( DataType variable : Iterable )
例如:
for( String variable : arr )
arr
- 可以是类型为String的数组或集合(即可迭代对象)
s
- 在每次迭代中,将会取出arr中的每个值并将其赋值给s