2011-06-09 52 views
2

可能重複:
logical operators in java
What's the difference between | and || in Java?位運算和booolean運營商之間的差異 '與'

正如標題所說,我需要知道&運營商和&&運營商之間的差異。 任何人都可以用簡單的話來幫助我。

  1. 它們是如何不同?
  2. 哪一個在IF語句中使用?
+1

重複了很多次... – 2011-06-09 01:31:25

+2

夥計們,只是因爲它可能是一個愚蠢並不意味着它不是一個真正的問題......認真...... – Mehrdad 2011-06-09 01:34:08

+4

@Mitch:你至少可以鏈接重複。 – 2011-06-09 01:34:26

回答

4

其實有三 「和」 運營商:

  • a && b,A和B是布爾:評估。如果屬實,則評估b。如果是,結果是真實的。否則,結果是錯誤的。 (即,如果a不正確,則不評估Ie.b)
  • a & b,其中a和b是布爾值:評估兩者,做邏輯和(即只有兩者都爲真時才爲真)。
  • a & b,其中a和b都是整型(int,long,short,char,byte):評估a和b,並執行按位AND。

第二個可以被視爲一種特殊類型的第三個的,如果一個人看到boolean作爲一比特整數類型;-)

作爲if語句來的頂層條件你可以使用前兩個,但第一個最有用。 (即沒有太多的情況下,你真的需要第二個,第一個會做錯的事情,但反過來更常見,在大多數情況下,第一個只是速度更快。)

4

如果第一個結果是FALSE,&&不計算第二個結果。 &呢。

+2

不是完全正確的。還有一個區別:'&'運算符也是按位AND運算符,而&&不是。 – Bohemian 2011-06-09 01:43:09

+0

@Bohemian:人們可以說這已經在問題標題中了。 – 2011-06-09 01:49:41

+0

@波希米亞:點擊我的答案編輯,你看到的可能是有趣的。 :P(至於我爲什麼評論它:因爲它的一部分對於Java來說是錯誤的,並且它的一部分有點多餘 - 無論如何你都不能使用&&'作爲整數,所以你不能真的出錯這裏。) – Mehrdad 2011-06-09 02:03:37

4

& &如果第一個操作爲true,則只計算第二個表達式。 &評估這兩個表達式(即使第一個表達式爲假,並且在評估第二個表達式時沒有意義)。因此,& &在邏輯運算中比&快一點點。因此& &也被稱爲短路和。

&除邏輯運算符外,還可以用作位運算符。所以,你可以做一個2號位「和」例如像

int result = 1 & 3; // will evaluate to 1 

& &不能用作位和運營商。

對於有條件的IF操作員,請使用& &。它比&快了一點點。