Opetators (操作符)

一、赋值运算符

  • “=” 执行顺序是从右往左

二、算术运算符

  • “+”、“-”、“*”、“/”、“%”、“++”、“–”

    • ++a,–a:前缀式,先加减后赋值

    • a++,a–:后缀式,先赋值后加减

三、关系运算符(比较运算符)

  • “==”、“>”、“>=”、“<”、“<=”、“!=”

四、逻辑运算符

  • “|”、“||” 逻辑或:一个为true则结果为true

    • “|”:两个都要运算
    • “||” 又称短路运算符:前面为true则后面可不运算;前面为false则后面要运算
  • “&”、“&&” 逻辑与:两个都为true则结果为true

    • “&”:两个都要运算
    • “&&” 又称短路运算符:前面为false则后面可不运算;前面为true则后面要运算
  • “!” 逻辑非:取反操作,true变false,false变true

  • “^” 逻辑异或:两个逻辑值不同则为true,相同则为false

五、位运算符

  • “>>”:对于正数,向右移位时,高位补0,低位挤掉;对于负数,向右一位时,高位补1,低位挤掉

  • “<<”:不论正负,向左移位时,都是高位挤掉,低位补0

    • 巧用:x<<n 看作 x*(2n),如5<<1就是5*(21)=10
  • ">>>"无符号右移:向右移位时,无论正负,都是高位补0,低位挤掉

  • “>>”,">>>","<<": 移动的运算数是byte和short类型时,将会自动类型提升为int

  • “|” 按位或:有一个为1则结果为1,例如:0101 | 0111 得到 0111

  • “&” 按位与:两个都为1则结果为1,例如:0101 & 0111 得到 0101

  • “^” 按位异或:两个二进制位不同则为1,相同则为0,例如:0101 ^ 0111 得到 0010

    • 巧用:r=rs;s=sr;r=r^s; 可交换r与s变量的值(但对浮点数不起作用)
  • “~” 按位取反:0变1,1变0,包括符号位也会取反

    • int x = ~y; "~"为单目运算符

六、特殊赋值运算符

  • 与算术运算符有关的

    • a+=b; 即为a=a+b;
    • a-=b;
    • a*=b;
    • a/=b;
    • a%=b;
  • 与位运算中移位有关的

    • a>>=b; 即为a=a>>b;
    • a>>>=b; 即为a=a>>>b;
    • a<<=b; 即为a=a<<b;
  • 与其他位运算有关的

    • a|=b;
    • a&=b;
    • a^=b;
    • 注意没有a~=b;

七、三目运算符

  • 布尔表达式 ? first : second

    • 布尔表达式返回结果为true则取first,否则取second
    • ? ( ? : ) : ( ? : ) 可以嵌套使用
  • 如果期望通过一个变量接受三目运算符结果,则此变量必须类型与 first 和 second 两个值的类型兼容

    • 例:int a = b>c?b:c; 若b为short类型,c为char类型,正确

八、优先级

2、操作符详解

相关文章:

  • 2021-05-17
  • 2021-09-28
  • 2021-12-25
  • 2021-10-07
  • 2021-12-22
  • 2021-07-03
  • 2021-11-14
猜你喜欢
  • 2023-03-02
  • 2021-12-29
  • 2022-12-23
  • 2022-01-05
  • 2021-11-28
  • 2021-05-09
  • 2021-12-26
相关资源
相似解决方案