被java语法困惑

这个问题在这里已经有了答案:

  • Java 8中的快捷方式“or-assignment”(| =)运算符会回答

  • 这是对声明的简短陈述:

    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并且它们都位于不同的位置。

    链接地址: http://www.djcxy.com/p/73907.html

    上一篇: Confused by java syntax

    下一篇: = in Java / Android mean? (bit