【问题标题】:Weird for statement奇怪的声明
【发布时间】:2016-05-30 17:17:09
【问题描述】:

今天我在一些 Java 代码中遇到了奇怪形式的 for 语句: 该语句的示例如下:

String doSomething(){

  String str;

  for (str = ""; isTrue(); str = obj.findSomething(0)) {
    ;
  }

return str;
}

最后,我没有明白它是如何工作的。 有什么想法吗?

谢谢。

【问题讨论】:

  • 在单步执行时通过调试器运行它,您会看到。
  • 我看不出有什么奇怪的地方。如果您认为 for 循环仅用于计数器,可能需要查看 docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html。
  • 它的工作方式类似于“正常”for(int i = 0; i < x; i++)。如果您不知道for 语句中每个部分的含义,请阅读tutorial。

标签: java for-loop


【解决方案1】:
String doSomething() {
    String str;
    for (str = ""; isTrue(); str = obj.findSomething(0)) {
        ; // inside
    }
    return str;
}

等价于

String doSomething() {
    String str;
    { // begin of for loop's scope
        str = ""; // initialization
        while (isTrue()) { // termination
            {
                ; // inside
            }
            str = obj.findSomething(0); // increment
        }
    }
    return str;
}

这适用于像这样的每个 for 循环,for(;;) 中的空终止条件被视为true。

很简单

String doSomething() {
    String str = "";
    while (isTrue()) {
        str = obj.findSomething(0);
    }
    return str;
}

这样写就不会那么混乱了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2012-10-25
    相关资源
    最近更新 更多