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