| =运算符在Java中做什么?

dgr*_*tin 15 java operators

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

增加振动

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

要使用默认模式,请将"DEFAULT_VIBRATE"添加到默认字段:

notification.defaults |= Notification.DEFAULT_VIBRATE;
Run Code Online (Sandbox Code Playgroud)

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

你能提供一个使用数字的例子吗?

谢谢

Cho*_*ett 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
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 17

a |= xa = a | x,并且|是"按位包含OR"

每当出现这样的问题时,请查看运营商的官方教程.

每个运营商都有一个分配表:

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

哪里a OP= x翻译成a = a OP x

关于按位操作:

   0101 (decimal 5)
OR 0011 (decimal 3)
 = 0111 (decimal 7)
Run Code Online (Sandbox Code Playgroud)

在一组位用作标志的情况下,可以使用按位OR; 单个二进制数字中的位可以各自表示不同的布尔变量.对数字应用按位OR运算以及在某些位置包含1的位模式将导致设置了这些位的新数字.例如: