2016-05-30 67 views
-4

今天我见过的对一些Java代码语句奇怪的形式:这句话的 例子是下一个:怪异声明

String doSomething(){ 

    String str; 

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

return str; 
} 

最后,我没赶上它是如何工作的。 任何想法?

谢谢。

+0

单步执行时通过调试器运行它,你会看到。 – hexafraction

+1

我没有看到任何奇怪的事情。如果您认为循环仅用于计数器,可能需要查看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html。 – CConard96

+1

对于(int i = 0; i Tom

回答

0
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(;;)一个空的终止条件被视为true

它只是

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

当这样写不会像混乱。