2015-04-01 30 views
-1

我只是想知道,如果運行一半的'if'語句在它不得不滿足的條件時會停止運行。這很難用文字來解釋,這裏是一個例子:如果語句中斷可以中斷嗎?

boolean flag = true; 

if(flag){ 

//Some code execution here (code execution #1) 

flag = false; 

//Some more code execution here (code execution #2) 


} 

在這種情況下運行「代碼執行#2」嗎?或者當flag設置爲false時,會跳過if語句的其餘部分嗎?

+2

是的,它會運行;該檢查只發生一次。你試過了嗎? – Ryan 2015-04-01 01:33:25

+0

你可以使用「break」 – mastrgamr 2015-04-01 01:33:37

+1

這是什麼功能。 – Qix 2015-04-01 01:34:21

回答

3

從條件檢查時起,if語句的全部內容將被執行,標記等於真。

0

絕對不是在你描述的情況下,因爲if狀態的條件是在if被執行的時候被評估的。

,如果你需要一個程序流控制機制,打破了if語句,你可以使用異常的(但是這不是很理想的原因有很多,)

或者您可以使用一個標籤和一個破發聲明:

boolean flag = false; 
    MYLABEL: 
    if (flag) { 
     if (true) { 
      break MYLABEL; 
     } 
     System.err.println("I will not execute"); 
    } 
+1

避免標籤。它們雜亂無章,語言多種多樣,容易出錯並且完全不可讀。 – Qix 2015-04-01 01:38:51

+2

我很欣賞你的意見,但我想拋出一些事實,比如它們也是Java,c和C++中完全合法的語言結構,僅舉幾例,並且在很多嚴肅的項目中使用相當有用(請參閱Linux內核, iOS/OS X開源組件等)。類似流量控制的備選方案具有明顯的缺點。 – 2015-04-01 02:11:42

+0

如? Linux內核非常陳舊。快速搜索可讀性和標籤。你會發現他們通常是負面的。它們是有效的構造,但由於歷史原因而已。編譯器從函數調用中優化地獄。操作顯然是新的;如果他們開始使用標籤作爲常用構造,那麼您將在稍後設置失敗。 – Qix 2015-04-01 12:45:45