什么是管道等于运算符(=)?
开源中遇到过管道等于运算符(|=)的开发者库代码可能想知道它的含义。该运算符经常被误认为是逻辑赋值,它包含重要的按位 OR 运算。
理解按位 OR
管道等于运算符 |= 的工作方式与 = 相同。在下面的代码中, |= 运算符将 defaults 的原始值与常量 DEFAULT_SOUND 结合起来:
notification.defaults |= Notification.DEFAULT_SOUND;
此操作相当于:
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
其中 |表示按位 OR 运算符。
常量掩码中的按位 OR
在提供的示例中,常量 DEFAULT_SOUND、DEFAULT_VIBRATE 和 DEFAULT_LIGHTS 是 2 的幂:
DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1这允许使用按位或来添加或删除标志。例如:
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // 001 | 010 = 011添加另一个标志:
myFlags |= DEFAULT_LIGHTS;简单地附加一个新标志。
测试标志存在
按位与运算符 (&) 测试是否存在标志:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;如果结果是非零,标志已设置。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3