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

2022-09-02 11:19:44

在阅读 Android 通知指南时,我偶然发现了这一点:

添加振动

您可以使用默认振动模式或应用程序定义的振动模式提醒用户。

要使用默认模式,请将“DEFAULT_VIBRATE”添加到默认值字段中:

notification.defaults |= Notification.DEFAULT_VIBRATE;

这样做很清楚:它将标志添加到通知对象的默认标志中。但是运算符在Java中做什么呢?它看起来像一个“OR”,但它是如何工作的?DEFAULT_VIBRATE|=

您能举个例子吗?

谢谢


答案 1

|=是按位 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

答案 2

a |= x是 ,并且是“按位包含 OR”a = a | x|

每当出现此类问题时,请查看有关运算符的官方教程

每个运算符都有一个分配表单:

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

在哪里翻译为a OP= xa = a OP x

关于按位运算

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

按位 OR 可用于将一组位用作标志的情况;单个二进制数字中的位可以分别表示一个不同的布尔变量。将按位 OR 运算应用于数字以及在某些位置包含 1 的位模式将导致设置了这些位的新数字。