如果你有兩個if
聲明:IF語句是否相互衝突?
int n = -1;
if (n < 0)
return null;
if (n <= 1)
return "yay";
將它返回null或耶?它會通過代碼從上到下運行,並在第一個if
聲明處停止,還是將使用最後一個?
如果你有兩個if
聲明:IF語句是否相互衝突?
int n = -1;
if (n < 0)
return null;
if (n <= 1)
return "yay";
將它返回null或耶?它會通過代碼從上到下運行,並在第一個if
聲明處停止,還是將使用最後一個?
當然,第一個if
語句將被首先評估。 n
這是-1
其實< 0
,所以與該if
聲明相關的代碼體將被執行。null
將被退回。
您可能會感到困惑的是,雖然第二個if
聲明將評估爲真,但它永遠不會被評估。這是因爲return
語句在執行時會留下它所在的函數/方法。
如果你寫道:
int x = 0;
return x;
x = 5;
x
將被設置爲0
。將返回x
。返回後的任何代碼行都不會執行。
這裏是另外一個例子,以澄清:
x
將被設置爲10
。 x
這是10
實際上是而不是< 0
,所以if
語句的正文將被跳過。 x
將被設置爲0
。
另外,如果您在第一個if中沒有返回,請注意兩者都會被執行! – nico 2010-09-12 22:06:34
它會返回null。
BTW在Java的「如果」是無效的,你必須使用「如果」和IFS
停止圓括號它會通過代碼從上到下運行,並在第一個IF語句
是的,它會的。如果確實如此,那麼它將立即返回null。 (我不知道爲什麼你標記這個問題如Java不過,您發佈的代碼不是Java代碼。)
它會返回null,只是因爲返回(在第一次測試)是指第二次測試將不執行。
它將返回null
,因爲它是第一個匹配的條件。返回之後,函數的其餘部分不會執行,並且函數會按順序執行,所以它們永遠不會發生衝突。
的「衝突的if語句」另一個樣品是當你創建一個無法達成的代碼,例如:
if (n < 0)
return "a";
if (n == -1)
return "b";
此代碼將不會返回「B」,編譯器可能會錯誤或警告它。原因是當n = -1
時,第一個語句總是被打中,所以第二個語句永遠不會到達。
將返回null。一旦你點擊了返回語句,控制就返回到調用函數,將函數的返回值設置爲你在返回關鍵字後指定的值。
它返回null,因爲它是它遇到的第一個返回。它甚至不檢查第二個異常。
當代碼運行時,JVM檢查的第一個條件,如果和,當條件滿足時,執行這是什麼,如果裏面。如果有return null
那麼它返回null。返回後,此方法中不執行任何代碼。唯一的例外是在此嘗試之後,您在try
區塊和finally
區塊中有回報。
這只是您的代碼的一小部分重新格式,並帶有一些明確的註釋。我發現明確的大括號可以幫助一些人看到發生了什麼。 只需按照程序流程。 如果從該函數返回,則不會執行該函數中的後續語句。(這是一個白色的謊言,看'終於'異常處理,但禁止...) - 這是一個非常程序化(逐步)的過程。
int n = -1;
if (n < 0) {
return null; // no other statement in this function will be executed
// if this line is reached
}
if (n <= 1) {
return "yay"; // no other statement in this function will be executed
// if this line is reached
}
它將返回null。您發佈的代碼的唯一價值將會導致'Yay'返回將是0.
@MAK:剛剛修復了 – 2010-09-12 21:32:49