2017-01-23 79 views
4

是否有過這裏的情況:否則如果的邏輯等價

if (condition) { 
    statement 
} else { 
    if (condition2) { 
     statement 
    } else { 
     statement 
    } 
} 

不等同於:

if (condition) { 
    statement 
} else if (condition2) { 
    statement 
} else { 
    statement 
} 

如果有,我在努力尋找案件的情況。如果有人知道一個反例,或者如果他們肯定相當,你的意見將不勝感激。

+2

不,這兩個陳述是等價的。 – SarTheFirst

+0

@SarTheFirst請閱讀[我應該怎麼做當有人回答我的問題](http://stackoverflow.com/help/someone-answers) – CKing

+0

只有當稍後有人過來,並錯誤地編輯你的糟糕的代碼。 –

回答

2

在你的問題中的兩個陳述是完全一樣的。也就是說,如果您想在再次輸入if-else塊之前執行一些常用步驟,則第一種說法更有用。例如:

if (condition) { 
    statement 
} else { 
    perform some common steps. 
    if (condition2) { 
     statement 
    } else { 
     statement 
    } 
} 
0

不,這些總是完全相同。

原因它們完全等價,在第一個例子中,塊中唯一的語句是一個if語句;所以刪除塊根本不會改變語義,因爲它只包含一個沒有任何變量聲明的語句等等。

對比搭配:

if (condition) { 
    statement 
} else { 
    String foo = "bar"; 
    if (condition2) { 
     statement 
    } else { 
     statement 
    } 
} 

現在塊做另外一些東西到單if在你的版本,這樣的事情有分歧。

但由於您的版本沒有什麼以外的if,他們是完全一樣的。

1

兩個條件結構都相等。

在第一種情況下,您有更多的選擇,例如您可以執行一些代碼,以便其中的第二個if或else轉爲true,以使塊必須執行。

if (condition1) { 
    ... 
} else { 
    ... 
    if (condition2) { 
     ... 
    } else { 
     ... 
    } 
    ... 
} 

但首先是更容易閱讀。

也可以使用交換機,以提高性能。

+0

由於處理器的工作原理,不是第一個效率比第二個效率低嗎? –

0

中的else後面的括號中是不必要的,因爲後面還有一個指令(第二IF),所以,除非你解析Java文件由於某種原因,事後應該沒有情況,即他們是不同在任何情況下

0

條件是真或假。只有四個選項是四個兩個條件。 在這兩種情況下,三種語句中只有一種會被執行,並且在兩種情況下都是相同的,因爲您可以嘗試使用全部四種選項。 因此,即使該陳述會對條件產生影響,這也不會產生影響。所以我敢打賭它是相當的。