Java基础-Java运算符
-
基本运算符
-
+:加,计算左右两个操作数的和 -
-:减,计算左右两个操作数的差 -
*:乘,计算左右两个数的积 -
/:除,计算左右两个数的商- 整数作为被除数
- 除数是整数
- 结果为整数,小数部分舍弃
- 0不可以作为除数,会抛出异常
- 除数是浮点数
- 结果是浮点数
- 除数是整数
- 浮点数作为被除数
- 结果为浮点数
- 0.0可以作为被除数,结果为Infinity
- 整数作为被除数
-
%:除余,计算左右两个数的余数
-
-
赋值运算符
-
=:将右边操作数的值赋值给左边 -
+=:将左边的数与右边的数进行加法运算后赋值给左边,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+1的值,然后a指向新值,进行运算,原来的值在a出栈之前不会消失
-
a++:先运算再自增- 先进行运算,之后在栈内存中开辟新值
-
-
关系和布尔运算符
==:判断左右两边是否相等,对于基本数据类型,==判断值是否相等。对于引用数据类型,==判断地址是否相等。!=:判断左右两边是否不等<:判断左边是否小于右边>:判断左边是否大于右边<=:判断左边是否小于等于右边>=:判断左边是否大于等于右边- ?:三目运算符
- 用法:判断条件 ? true: false
-
逻辑运算符
&&:逻辑与运算,左右两边均为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
-
-

浙公网安备 33010602011771号