• Java运算符


    运算符

    自增和自减运算符

    • ++ :操作数值型变量,++ 放操作数左边,操作数自身加 1,返回加 1 后的结果;++ 放操作数右边,操作数自身加 1, 返回加 1 前的结果;
    • -- :操作数值型变量,-- 放操作数左边,操作数自身减 1,返回减 1 后的结果;-- 放操作数右边,操作数自身减 1, 返回减 1 前的结果;
    int c = 5;
    int d = ++c;
    System.out.println(a);  //6
    System.out.println(d);  //6
    
    int a = 5;
    int b = a++;
    System.out.println(a);  //6
    System.out.println(b);  //5
    

    位运算符

    • & :按位与
    • | :按位或
    • ~ :按位非(键盘数字 1 左边键)
    • ^ :按位异或
    • << :左移运算符
    • >>:右移运算符
    • >>>:无符号右移运算符

    需要记住一点,位运算操作的是数值在计算机存储的二进制码(补码)

    System.out.println(5 & 9);   //1
    System.out.println(5 | 9);   //13
    System.out.println(~-5);     //4
    System.out.println(5^9);     //12
    

    左移运算符是将操作数的二进制码整体左移指定位数,左移后右边空出来的位以 0 填充,左移 n 位,相当于乘以 2 的 n 次方。

    System.out.println(5 << 2); //20
    System.out.println(-5 << 2);  //-20
    

    右移运算符有两个:>>>>>

    • 对于 >> 运算符而言,将操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位填充,即如果操作数原来是正数,则左边补 0;如果操作数是负数,则左边补 1。因此,右移 n 位,相当于除以 2 的 n 次方。

    • ` 是无符号右移运算符,将操作数的二进制码右移指定位数后,左边空出来的位全补 0 。

    System.out.println(-5 >> 2);  //-2
    System.out.println(-5 >>> 2);  //1073741822
    

    进行移位运算的规则:

    • 对于 byte、short 或 char 类型的操作数会先自动类型转换为 int 类型后再移位;
    • 对于 int 类型的整数移位 a >> b,当 b > 32时,系统先用 b 对 32 求余(因为 int 类型只有 32 位),得到的结果才是真正移位的位数;
    • 对于 long 类型的整数移位 a >> b,当 b > 64时,先用 b 对 64 求余,得到的结果才是真正移位的位数。

    instanceof

    instanceof 是一个二元运算符,a instanceof B 判断 a 是否为 B 的实例,B 是类或者接口、父类或者父接口,即要求 B c = a 成立,最终返回 boolean 类型值。

    public static void main(String[] args) {
        Double obj = 1.0;
    	
        //obj是Double的实现类
        System.out.println(obj instanceof Double);  //true
        //obj是Object的子类的实现类
        System.out.println(obj instanceof Object);  //true
    }
    

    运算符优先级

    运算符说明 Java 运算符
    分隔符 . [] () {} , ;
    单目运算符 ++ -- ~ !
    强制类型转换运算符 (type)
    乘法/除法/求余 * / %
    加法/减法 + -
    移位运算符 << >> >>>
    关系运算符 < <= >= > instanceof
    等价运算符 == !=
    按位与 &
    按位异或 ^
    按位或 |
    条件与 &&
    条件或 ||
    三目运算符 ? :
    赋值 = += -= *= /= &= |= ^= %= <<= >>= >>>=

    记住 && 和 || 优先级顺序技巧:将 && 看成一般算式的乘法,一般算式中乘法优先级最高,所以 && 优先级比 || 高。

  • 相关阅读:
    高性能MySQL之锁详解
    采样方法-数据不均衡
    bert中的分词
    中文多分类 BERT
    Transformer+BERT+GPT+GPT2
    GPU下train 模型出现nan
    list 转换成dictionary,并统计词频
    python多个分割符split字符串
    tensorflow中的kernel/Adam 变量的来源
    tensorflow 使用预训练好的模型的一部分参数
  • 原文地址:https://www.cnblogs.com/zongmin/p/11339019.html
Copyright © 2020-2023  润新知