I tried searching using Google Search and Stack Overflow, but it didn't show up any results. I have seen this in opensource library code:

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;

其中|是逐位OR运算符.

所有操作员的标号均为here.

使用按位运算符是因为,正如经常发生的那样,这些常量使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

因此,您可以使用按位OR添加标志

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

所以

myFlags |= DEFAULT_LIGHTS;

简单地说就是我们加了一面旗帜.

对称地,我们用&测试一个标志:

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

Java相关问答推荐

Java同步小服务器

BiPredicate和如何使用它

为什么如果数组列表中有重复项,我的代码SOMETIMES不返回true?

缩小画布比例后更改滚动窗格的内部大小

JavaFX Maven Assembly插件一直打包到错误的JDK版本

在Java Swing Paint应用程序中捕获快速鼠标移动时遇到困难

多重延迟签名

Jenv-相同的Java版本,但带有前缀

如何在Application.yaml中连接字符串?

%This内置函数示例

基于配置switch 的@Controller的条件摄取

try 使用类来包含JSON响应

如何使用MapStrCut转换双向链接

IntelliJ IDEA依赖项工具窗口丢失

在整数列表中查找和可被第三个整数整除的对时出现无法解释的RunTimeError

在Java Spring JPA中插入包含对其他实体的引用的列

在Spring Boot中使用咖啡因进行缓存-根据输出控制缓存

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序

原始和参数化之间的差异调用orElseGet时可选(供应商)

始终使用Spring Boot连接mongodb上的测试数据库