以下代码有效,但我没有写。它查看计算机端口名称并尝试将其与指定字符串匹配(对于RxTx串行通信)。
我的问题是for循环中的语句是做什么的?我从未见过其他任何安排(初始化;条件测试;迭代器)语句;
基本上我问的是什么(String portName:PORT_NAMES)部分和“:”运算符呢?
private static final String PORT_NAMES[] = {
"/dev/tty.usbserial-A9007UX1", // Mac OS X
"/dev/ttyUSB0", // Linux
"COM4", // Windows
};
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
// iterate through, looking for the port
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
for (String portName : PORT_NAMES) {
if (currPortId.getName().equals(portName)) {
portId = currPortId;
break;
}
}
}
由于
答案 0 :(得分:0)
这是Java
for-each 语句。它只是遍历:
符号后指定的集合的每个元素。
答案 1 :(得分:0)
这是我记得曾经听过的称为“扩展为”循环的东西。它基本上是C#“foreach”运算符的Java等价物;它遍历PORT_NAMES枚举中的String对象。
编辑:Linky http://leepoint.net/notes-java/flow/loops/foreach.html
答案 2 :(得分:0)
这是Java for-each构造,自JDK 1.5以来就已经很熟悉了。它基本上等同于:
for (int i = 0; i < PORT_NAMES.length; ++i) {
String portName = PORT_NAMES[i];
etc...
}
因此,这是迭代数组或集合的一种更好的方法,而不是必须使用循环中其他任何地方都没有使用的索引变量。有关更多信息,请参阅Oracle文档:
http://download.oracle.com/javase/1,5.0/docs/guide/language/foreach.html