繁体   English   中英

|= 运算符在 Java 中有什么作用?

[英]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 |= xa = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM