被java语法困惑
这个问题在这里已经有了答案:
这是对声明的简短陈述:
noti.flags = noti.flags | Notification.FLAG_AUTO_CANCEL;
这是一个用作赋值的按位或运算符
noti.flags |= Notification.FLAG_AUTO_CANCEL;
是一样的
noti.flags = noti.flags | Notification.FLAG_AUTO_CANCEL
它是Bitwise Or运算符的赋值版本,即:
noti.flags = noti.flags | Notification.FLAG_AUTO_CANCEL;
bitwise or
执行包含的按位或操作:
10110 bitwise or
01100
-----------------
11110
源代码:
如果通知在被用户点击时应该被取消,那么位应该被设置到应该设置的标志字段中。
public static final int FLAG_AUTO_CANCEL = 0x00000010;
这是十六进制的数字16.如果你想知道为什么我们使用这些类型的标志,这是因为其他标志将有表示:
0x00000020
0x00000040
0x00000080
每一次,我们都会得到2的幂。把它转换成二进制,我们得到:
00010000
00100000
01000000
10000000
因此,我们可以使用bitwise or
确定哪些标志存在,因为每个标志只包含一个1
并且它们都位于不同的位置。