2016-05-30 46 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; 
} 

當這樣寫不會像混亂。