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

时间:2010-02-24 10:50:56

标签: java operators

在阅读Android guide to Notifications时,我偶然发现了这一点:

  

添加振动

     

您可以使用默认振动模式或使用a警告用户   由您的应用定义的振动模式。

     

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

notification.defaults |= Notification.DEFAULT_VIBRATE;

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

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

由于

6 个答案:

答案 0 :(得分: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

答案 1 :(得分:17)

a |= xa = a | x|为“按位包含OR”

每当出现此类问题时,请检查the official tutorial on operators

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

+= -= *= /= %= &= ^= |= <<= {{ 1}} >>=

>>>=转化为a OP= x

的位置

关于bitwise operations

a = a OP x
  

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

答案 2 :(得分:3)

这是一个简单的符号,用于在一个步骤中执行按位OR和赋值。

x |= y相当于x = x | y

这可以通过许多运营商来完成,例如:

x += y
x -= y
x /= y
x *= y
etc.

使用数字的按位OR的示例..如果在操作数中设置了任何一位,则将在结果中设置该位。所以,如果:

x = 0001 and
y = 1100 then
--------
r = 1101

答案 3 :(得分:1)

这是位智能运算符。如果notifications.default为二进制形式的0b00000001且Notification.DEFAULT_VIBRATE为0b11000000,则结果为0b11000001。

答案 4 :(得分:1)

在这种情况下,notification.defaultsbit array。使用|=,您将Notification.DEFAULT_VIBRATE添加到默认选项集。在Notification内部,可能会检查是否存在此特定值:

notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present

答案 5 :(得分:0)

按位OR运算符