for()函数中的":"含义是什么?

4

我正在做一个涉及板子的任务。基础代码已经给出,但我不理解for()参数中的冒号:是什么意思。它是否遍历整个板子(即ArrayList)?

private ArrayList<MovingElement> moveElems = new ArrayList<MovingElement>();

for (MovingElement mElement : moveElems) {
    mElement.step();
}

请查看JLS:http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2 - Rohit Jain
1
而 ":" 不是一个参数。这被称为“语法”。 - user207421
8个回答

10

这是一种特殊形式的for循环,用于迭代数组和任何Iterable,它包括任何Collection

这被称为for-each循环,如:对于列表的每个元素。

阅读:for (MovingElement mElement : moveElems)解释为“对于集合moveElems中的每个MovingElement”。

参见:For-Each循环


4

这是Java中的for-each循环。

对于Arraylist(或)数组中的每个元素。

该元素将被分配给作用域为for循环的MovingElement mElement。


2
想象一下这样的情景:
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循环。

2

这是一种简单的foreach循环,它将遍历给定数组中的每个元素。

在本例中,MovingElement将是数组的类型,mElement将是当前元素,moveElems将是实际的数组。

“:”仅分隔两个部分

因此,在您的情况下,该循环将遍历ArrayList中的每个元素并使用其step()方法。


1
这是Java的“for each”语法。它或多或少等同于:
Iterator<MovingElement> iter = moveElems.iterator();
while (iter.hasNext()) {
    iter.next().step();
}

1
这在Java中被称为foreach或增强型for循环。冒号':'字符将迭代变量类型/名称与要遍历的对象分隔开来。
这里有一个小tutorial,解释了它的用法,需要知道它是在Java语言的1.5版本中引入的。它是语法糖,可以通过使用标准for循环和/或使用迭代器来实现相同的迭代行为。
foreach循环可用于遍历数组中的元素,或遍历实现Iterable接口的对象(通常是集合)。
仅供参考,foreach语句在Java语言规范的第§14.14.2节中定义。

0

0

- 你刚刚遇到的是一个被称为扩展for循环或更著名的for-each循环。

for( DataType variable : Iterable )

例如:

for( String variable : arr )

arr - 可以是类型为String的数组或集合(即可迭代对象)

s - 在每次迭代中,将会取出arr中的每个值并将其赋值给s


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接