Java“|=”是什么意思?(pipe equal运算符)

我尝试使用Google搜索和堆栈溢出进行搜索,但未显示任何结果。我已经在开源库代码中看到了这一点:

Notification notification = new Notification(icon, tickerText, when);

notification.defaults |= Notification.DEFAULT_SOUND;

notification.defaults |= Notification.DEFAULT_VIBRATE;

”| =”(pipe equal operator)是什么意思?

回答:

|=的读取方式与相同+=

notification.defaults |= Notification.DEFAULT_SOUND;

是相同的

notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;

|按位或运算符在哪里。

这里引用了所有运算符。

之所以使用按位运算符,是因为这些常量经常使int能够携带标志。

如果你查看这些常数,你会发现它们具有两个幂:

public static final int DEFAULT_SOUND = 1;

public static final int DEFAULT_VIBRATE = 2; // is the same than 1<<1 or 10 in binary

public static final int DEFAULT_LIGHTS = 4; // is the same than 1<<2 or 100 in binary

因此,你可以使用按位或来添加标志

int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // same as 001 | 010, producing 011

所以

myFlags |= DEFAULT_LIGHTS;

只是意味着我们添加了一个标志。

对称地,我们使用&以下命令测试设置的标志:

boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;

以上是 Java“|=”是什么意思?(pipe equal运算符) 的全部内容, 来源链接: utcz.com/qa/404567.html

回到顶部