否运算 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
的调用,减轻内存压力,提高性能