[英]What does the |= operator do in Java?
在阅读Android 通知指南时,我偶然发现了这一点:
添加振动
您可以使用默认振动模式或应用程序定义的振动模式提醒用户。
要使用默认模式,请将“DEFAULT_VIBRATE”添加到默认字段:
notification.defaults |= Notification.DEFAULT_VIBRATE;
它的作用很明显:它将DEFAULT_VIBRATE
标志添加到通知对象的默认标志中。 但是|=
运算符在 Java 中做了什么? 它看起来像一个“或”,但它是如何工作的?
你能提供一个使用数字的例子吗?
谢谢
|=
是一个按位或赋值运算符。 它采用 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
, 和|
是“按位包含或”
每当出现此类问题时,请查看有关运算符的官方教程。
每个运算符都有一个赋值形式:
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
>>>=
其中a OP= x
被转换为a = a OP x
关于按位运算:
0101 (decimal 5)
OR 0011 (decimal 3)
= 0111 (decimal 7)
在使用一组位作为标志的情况下,可以使用按位或; 单个二进制数字中的位每个都可以代表一个不同的布尔变量。 将按位或运算应用于数字以及在某些位置包含 1 的位模式将产生一个新的数字,这些位被设置。
它是一种用于在一个步骤中执行按位 OR 和赋值的简写符号。
x |= y
等价于x = x | y
x = x | y
这可以通过许多运算符来完成,例如:
x += y
x -= y
x /= y
x *= y
etc.
使用数字的按位或的示例.. 如果在操作数中设置了任一位,则将在结果中设置该位。 因此,如果:
x = 0001 and
y = 1100 then
--------
r = 1101
在这种情况下, notification.defaults
是一个位数组。 通过使用|=
,您将Notification.DEFAULT_VIBRATE
添加到默认选项集。 在Notification
,很可能会像这样检查这个特定值的存在:
notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present
这是位明智的 OR 运算符。 如果notifications.default 是二进制形式的0b00000001 并且Notification.DEFAULT_VIBRATE 是0b11000000,那么结果将是0b11000001。
按位或运算符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.