2010-02-24 53 views
14

在閱讀Android guide to Notifications,我偶然發現了這一點:| =運算符在Java中做什麼?

添加振動

您可以提醒使用默認的振動模式或與您的應用程序定義的 振動模式的用戶。

要使用默認模式,「DEFAULT_VIBRATE」添加到默認領域:

notification.defaults |= Notification.DEFAULT_VIBRATE; 

這樣做是明確的:它添加DEFAULT_VIBRATE標誌,通知對象的默認標誌。 但是,|=運算符在Java中做什麼? 它看起來像一個「或」,但它是如何工作的?

你能提供一個使用數字的例子嗎?

感謝

回答

27

|=是按位OR-賦值運算符。它採用LHS的當前值,逐位進行RHS,並將該值分配回LHS(與添加的+=類似)。

例如:

foo = 32; // 32 =  0b00100000 
bar = 9; // 9 =  0b00001001 
baz = 10; // 10 =  0b00001010 
foo |= bar; // 32 | 9 = 0b00101001 = 41 
      // now foo = 41 
foo |= baz; // 41 | 10 = 0b00101011 = 43 
      // now foo = 43 
+0

非常感謝,這是明確和簡單 – dgraziotin 2010-02-24 11:01:01

17

a |= xa = a | x,並|是 「按位或」

每當這樣的問題出現,檢查the official tutorial on operators

每個運營商有賦值形式:

+=-=*=/=%=&=^=|=<<=>>=>>>=

a OP= x被翻譯成a = a OP x

而關於bitwise operations

0101 (decimal 5) 
OR 0011 (decimal 3) 
= 0111 (decimal 7) 

按位OR可以用於其中一組位用作標誌的情況;單個二進制數字中的位可以分別表示不同的布爾變量。對數字應用按位或操作以及在某些位置包含1的位模式將導致設置這些位的新數字。例如:

+0

這就是我做什麼,但我無法找到| =形式,看起來很奇怪,我 – dgraziotin 2010-02-24 10:59:55

+1

@bodom_lx好,它的存在就在那裏在我鏈接的頁面上。 – Bozho 2010-02-24 11:03:23

+0

它不是..有我知道的按位包含或運算符「|」。 我不知道的是「| =」形式。 今天我第一次看到它,這對我和我的計算機科學類同學來說並不明顯。 – dgraziotin 2010-02-24 11:07:35

1

這是位運算符。如果notifications.default爲二進制形式的0b00000001,並且Notification.DEFAULT_VIBRATE爲0b11000000,則結果將爲0b11000001。

3

這是用於在一個步驟中執行按位「或」和分配的簡短符號。

x |= y相當於x = x | y

這可以與許多運營商來完成,例如:

x += y 
x -= y 
x /= y 
x *= y 
etc. 

位或使用數字的例子..如果在操作數中設置了任一位,則該位將被設置在結果中。所以,如果:

x = 0001 and 
y = 1100 then 
-------- 
r = 1101 
1

在這種情況下,notification.defaultsbit array。通過使用|=,即可將Notification.DEFAULT_VIBRATE添加到一組默認選項。裏面Notification,很可能是這個特定值的存在將會對像這樣進行檢查:

notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present 
0

位或運算符

+0

它不是_只是按位或 – Bozho 2010-02-24 13:03:14