2013-10-26 18 views
-1

我想知道如果一個更合適,或只是更好地使用。使用if vs else時是否存在顯着差異?

即:

if(this.isValid()){ 
    valid = true; 
    return; 
}else if(this.isNumeric()){ 
    numeric = true; 
    return; 
}... 

VS:

if(this.isValid()){ 
    valid = true; 
    return; 
} 

if(this.isNumeric()){ 
    numeric = true; 
    return; 
} 

謝謝!

+2

由於'if'語句中有'return'語句,所以主要是風格化的。我不認爲這個問題有確定的答案。 – templatetypedef

+0

如果是沒有效率低下或可能導致錯誤,以及它的風格,那麼我可以關閉它,我只是無法找到答案,所以我在這裏搜索。 – Trevor

+0

寫'valid = isValid();可能更好。如果(有效)返回;'等等。如果它更適合原始行爲,也可以使用'valid | = isValid()'。 – Zong

回答

1

鑑於您的代碼段,使用if鏈與else else鏈之間沒有區別。但是,如果您刪除那些返回語句,並且行爲非常不同,

看看這個:

//Case one 
int num = 100; 

if(num > 90){ 
    System.out.println("Greater than 90"); 
} 
if(num > 80){ 
    System.out.println("Greater than 80"); 
} 

在這個代碼特定部分,這兩個語句將打印爲兩個語句單獨計算。

//Case two 
int num = 100; 

if(num > 90){ 
    System.out.println("Greater than 90"); 
}else if(num > 80){ 
    System.out.println("Greater than 80"); 
} 

在這種情況下,只會打印「大於90」的語句,因爲第二個條件不會被評估。

+0

你錯過了回報。 – boring

+0

謝謝你。現在,我明白,回報會使它按照我的意願工作,這就解決了:) – Trevor

+0

@kadaj我提供了基於if和else的不同結果的例子,如果沒有使用return語句的話。 – initramfs

0

他們都會以相同的效率工作,因爲您總是回到以前的狀態。 但是,如果你考慮線程,它可能會導致一些缺陷,因爲它可以在執行代碼之間中斷。

+0

你能詳細說說第二點嗎?我不明白這是如何影響線程的。 – Zong

+0

@鄭政立這是因爲不同的頭像在不同的時間評估。在多任務的情況下,即使在沒有多任務的情況下,同一組合的情況也是如此,那麼任何組合的最多一個條件永遠都是對的。 –

相關問題