我在一个应用程序源代码中发现了这行代码,但是我无法理解两个标志之间的按位或包含运算符|的含义。
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
在下面这行代码中,我也不理解|=操作符的含义:
notification.flags |= Notification.FLAG_AUTO_CANCEL;
有人能帮我吗?
|| 和 && ,它们执行布尔逻辑OR和AND,而单个 | 或& 是位运算。
如果查看标志文档,则清除顶部的标志为0x04000000,而single_top的标志则为0x20000000。
因此,您正在执行的操作是:
0x04000000 OR 0x20000000 = 0x24000000
这将在意图中设置所需的位,以使用两个所需的标志。
a | = b 运算符是 a = a | b 的重载等效物,类似于其他地方可能已经习惯看到的 + = , - 或 ++ 。
a | b是a和b按位或运算的结果。
它是按位或赋值操作。
a1 |= a2;
缩写意为:
a1 = a1 | a2;
|= 与 += 同义。
这与notification.flags = (notification.flags | Notification.FLAG_AUTO_CANCEL);
相同。
参见a += b
等价于a = (a + b);
这里我使用了多余的括号以提高清晰度。
byte a = 100,b = 100;
- johnchen902a += b
相当于 a = (a+b)
的类型转换。因此,如果 a
和 b
都是 byte
类型(或类似的类型),则 a = (a + b);
会引发编译错误,而 a += b
则不会。 - johnchen902(notification.flags | Notification.FLAG_AUTO_CANCEL);
这是一个逻辑或,有关信息请参见此处:Oracle.com
有关或的信息,请参见Wikipedia。
notification.flags
еЏЄиў«иЇ„дј°дёЂж¬ЎгЂ‚ - johnchen902