基本运算符
+
:加,计算左右两个操作数的和
-
:减,计算左右两个操作数的差
*
:乘,计算左右两个数的积
/
:除,计算左右两个数的商
%
:除余,计算左右两个数的余数
赋值运算符
=
:将右边操作数的值赋值给左边
+=
:将左边的数与右边的数进行加法运算后赋值给左边,a += b
相当于a = a + b
-=
:将左边的数与右边的数进行减法运算后赋值给左边,a -= b
相当于a = a - b
*=
:将左边的数与右边的数进行乘法运算后赋值给左边,a *= b
相当于a = a * b
/=
:将左边的数与右边的数进行除法运算后赋值给左边,a /= b
相当于a = a / b
%=
:将左边的数与右边的数进行除余运算后赋值给左边,a %= b
相当于a = a % b
自增、自减
++a
:先自增之后运算
a++
:先运算再自增
关系和布尔运算符
==
:判断左右两边是否相等,对于基本数据类型,==
判断值是否相等。对于引用数据类型,==
判断地址是否相等。!=
:判断左右两边是否不等<
:判断左边是否小于右边>
:判断左边是否大于右边<
=:判断左边是否小于等于右边>
=:判断左边是否大于等于右边逻辑运算符
&&
:逻辑与运算,左右两边均为true时,结果为true,否则结果为false||
:逻辑或运算,左右两边有一边或全部为true时,结果为true,否则结果为false!
:逻辑非运算,反转操作数的逻辑状态位运算符
&
:按位与,将两个操作数转换为补码,按位进行与运算,同为1结果为1,否则为0
样例
-8 & -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 & -2 = 1111 1000 = -8
|
:按位或,将两个操作数转换为补码,按位进行或运算,有一个为1或全为1则结果为1,否则为0
样例
-8 | -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 | -2 = 11111110 = -2
~
:按位取反,将操作数转换为补码,按位进行取反,将0变成1,1变成0
样例
~-8
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
~-8 = 0000 0111 = 7
^
:按位异或,将操作数转换为补码,按位进行异或,相同为0,不同为1
样例
-8 ^ -2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-2
原码:1000 0010
补码:1111 1101
反码:1111 1110
-8 ^ -2 = 0000 0110 = 6
移位运算
<<
:左移运算,左移几位相当将这个数乘2的几次幂
先将左边的操作数转换为补码
将这个值整体向左移动右边的操作数位
右边空出来的位用0填补,左边溢出的舍弃
样例
-16 << 2
-16
原码:1001 0000
反码:1110 1111
补码:1111 0000
-16 << 2 = 1100 0000 = -64
>>
:右移运算,右移几位相当于将这个数除以2的几次幂
先将左边的操作数转换为补码
将这个值整体向右移动右边的操作数位
左边空出来的位用0或1填补(正数用0,负数用1),右边溢出的舍弃
样例
-8 >> 2
-8:
原码:1000 1000
反码:1111 0111
补码:1111 1000
-8 >> 2 = 1111 1110 = -2
8 >> 2
8:0000 1000
8 >> 2 = 0000 0010 = 2
原文:https://www.cnblogs.com/ts00321001/p/14152415.html