2. 运算符

YuJia大约 1 分钟

算数运算符

  • +
  • -:对单个数字使用表示负数
  • *
  • \:只包含整数时,为整数除法,否则为浮点数除法

注意

1/0将会产生一个除0异常,浮点数除以0会得到无穷大(Infinity)或 NaN 的结果

  • %:取余,也称取模,也可以使用Math.floorMod方法来实现取模,但要注意负数取模,一般也很少遇到
System.out.println( -11 % 12);  // -11
System.out.println(Math.floorMod(-11, 12)); // 1

更多的运算需要借助Math工具类来实现

如果需要更严格的计算,可以采用StrictMath类来实现相同的算法,Math工具类采用平台计算,在浮点计算时,精度准确性都无法保障,但是性能会更好。

逻辑运算符

  • &&:逻辑与,具有短路作用,如果第一个表达式为false,则执行后续表达式的运算
  • ||:逻辑或,同上
  • !:逻辑非

位运算符

  • &:且,利用&可以只保留需要的位,掩掉其它位,如:7 & 0b100 = 4
  • |:或,对应bit位上,有1则为1,否则为0
  • ^:异或,对应bit位上,均为1则位0,否则不同则位1
  • ~:按位取反
  • >>: 有符号右移
  • <<:左移,例如,整型int,1 << 35 的具体执行逻辑是:1 << (35 % 32) = 1 << 3 = 8
  • >>>:无符号右移

三目运算符

a == b ? a : b