Java:串行端口枚举和for循环

时间:2011-09-07 14:36:13

标签: java for-loop serial-port enumeration

以下代码有效,但我没有写。它查看计算机端口名称并尝试将其与指定字符串匹配(对于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;
            }
        }
    }

由于

3 个答案:

答案 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

相关问题