在阅读Android guide to Notifications时,我偶然发现了这一点:
添加振动
您可以使用默认振动模式或使用a警告用户 由您的应用定义的振动模式。
要使用默认模式,请将“DEFAULT_VIBRATE”添加到默认字段:
notification.defaults |= Notification.DEFAULT_VIBRATE;
这样做很清楚:它将DEFAULT_VIBRATE
标志添加到通知对象的默认标志中。
但是|=
运算符在Java中做了什么?
它看起来像一个“OR”,但它是如何工作的?
你能提供一个使用数字的例子吗?
由于
答案 0 :(得分:28)
|=
是一个按位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
答案 1 :(得分:17)
a |= x
为a = a | x
,|
为“按位包含OR”
每当出现此类问题时,请检查the official tutorial on operators。
每个运营商都有一个分配表:
+=
-=
*=
/=
%=
&=
^=
|=
<<=
{{ 1}} >>=
>>>=
转化为a OP= x
a = a OP x
在一组位用作标志的情况下,可以使用按位OR;单个二进制数字中的位可以各自表示不同的布尔变量。对数字应用按位OR运算以及在某些位置包含1的位模式将导致设置了这些位的新数字。例如:
答案 2 :(得分:3)
这是一个简单的符号,用于在一个步骤中执行按位OR和赋值。
x |= y
相当于x = x | y
这可以通过许多运营商来完成,例如:
x += y
x -= y
x /= y
x *= y
etc.
使用数字的按位OR的示例..如果在操作数中设置了任何一位,则将在结果中设置该位。所以,如果:
x = 0001 and
y = 1100 then
--------
r = 1101
答案 3 :(得分:1)
这是位智能运算符。如果notifications.default为二进制形式的0b00000001且Notification.DEFAULT_VIBRATE为0b11000000,则结果为0b11000001。
答案 4 :(得分:1)
在这种情况下,notification.defaults
是bit array。使用|=
,您将Notification.DEFAULT_VIBRATE
添加到默认选项集。在Notification
内部,可能会检查是否存在此特定值:
notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present
答案 5 :(得分:0)
按位OR运算符