否运算 not

  • ~

  • 按位取反

0000 0011  ---[3]
1111 1100
1111 1101  ---[-3]

按位与 and

  • &

  • 两个位都是1时,结果才为1,否则为0

5 & 3
  
0101
0011
----
0001 ---[1]

按位或 or

  • |

  • 两个位都是0时,结果才为0,否则都为1

5 | 3
  
0101
0011
----
0111 ---[7]

异或(不带进位的加法)xor

  • ^

  • 两个位相同为0,不同则为1

5 ^ 3

0101
0011
----
0110 ---[6]

左移

  • <<

  • 向左进行移位操作,高位丢弃,低位补0

  • 在计算机中相当于 乘以2的n次方,因为在计算机中以二进制存储数据

10 << 2 === 40
  
0000 1010 << 2
0010 1000 ---[40(10*2^2)]

右移

  • >>
  • 向右进行移位操作,对无符号数,高位补 0,对于有符号数,高位补符号位
[8] 0000 1000 >> 3
[1] 0000 0001

[-8] 1111 1000 >> 3
[-1] 1111 1111

字符串加法

字符串连接加法,会调用对象的toString方法,原生类型相应的表示,在连接一个很长的字符串加法时,JDK内部会自动转换为StringBuilder的调用,减轻内存压力,提高性能