美文网首页
Java 运算符

Java 运算符

作者: Tinyspot | 来源:发表于2022-08-02 07:52 被阅读0次

    运算符

    • 算数运算符
      • 两个操作数:+ - * / %
      • 一元运算符:++ -- 递增/递减
    • 赋值运算符
      • = += -= *= /= %=
    • 关系运算符
      • > < >= <= == !=
    • 逻辑运算符
      • && || !
      • 三元运算符 expression ? result1 : result2
    int value = 1;
    boolean flag = value == 1 ? true : false;
    

    运算符优先级

    进制

    二进制:0, 1
    八进制:0~8
    十进制:0~9
    十六进制:09、AF

    进制转换:
    十进制转二进制:除 2 取余数,逆序排列

    位运算

    位运算:按二进制位(bit)进行运算
    按位运算符:& | ^ ~

    布尔运算符
    & 与 && 运算结果一样,只不过 && 会短路
    布尔运算符通常用于布尔值,而按位运算符通常用于整数值
    布尔运算符是短路,但按位运算符不是短路

    位移运算符

    • >> 带符号右移,符号位不动,其余位右移,符号位后边正数补0,负数补1
    • >>> 无符号右移,符号位一起右移,左边补0
    • << 左移,右边补
    • byte 和 short 会先转换为 int 再进行移位

    按位与(&)

    运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

    “与运算”的用途:
    (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
    (2)取一个数中指定位
    取 X 的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

    按位或(|)

    运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
    用途:
    (1)常用来对一个数据的某些位置1。
    方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

    例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

    按位异或(^)

    运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
    用途:
    (1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可
    (2)与 0 异或,保留原值 ,X ^ 0000 0000 = 1010 1110。

    按位取反(~)

    运算规则:~1=0; ~0=1;

    复合赋值运算符

    运算符 示例
    &= a &= b a = a & b
    &|= a |= b a = a |b
    ^= a ^= b a = a ^ b
    >>= a >>= b a = a >> b
    <<= a <<= b a = a << b

    不同长度的数据进行位运算,系统会将二者按右端对齐,然后进行位运算。

    掩码操作

    /**
     * 掩码(MASK)
     * 标识符,每个bit表示一种状态
     */
    public static void main(String[] args) {
        int base = 1;
        // 0001
        int is_dev_mask = base;
        // 0010
        int is_en_mask = base << 1;
        // 0100
        int is_alt_mask = base << 2;
    
        // 0101
        int value = 5;
    
        // 0101 & 0001 = 0001
        boolean isDev = (value & is_dev_mask) != 0;
        // 0101 & 0010 = 0000
        boolean isEn = (value & is_en_mask) != 0;
    }
    

    相关文章

      网友评论

          本文标题:Java 运算符

          本文链接:https://www.haomeiwen.com/subject/qsfyyrtx.html