运算符
运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。
运算符共分以下几种:
Ø 算术运算符
Ø 赋值运算符
Ø 比较运算符
Ø 逻辑运算符
Ø 位运算符
算数运算符:
赋值运算符
比较运算符
运算符 | 含义 | 示例 |
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
instanceof | 检查是否是该类的一个对象 | “aa”instanceof String |
注1:比较运算符的结果都是boolean型,也就是true/false。
注2:比较运算符“==”不能误写成“=” ,切记!切记!
逻辑运算符
运算符 | 含义 | 示例 |
& | 逻辑与 | A & B |
| | 逻辑或 | A | B |
^ | 逻辑异或 | A ^ B |
! | 逻辑反 | ! A |
|| | 短路或 | A || B |
&& | 短路与 | A && B |
“&”和“&&”的区别在于:
“&”:那么无论任何情况,“&”两边的表达式都会参与计算
“&&”:当“&&”的左边为false,则将不会计算其右边的表达式。
“|”和“||”的区别与“&”和“&&”的区别一样。
位运算符
运算符 | 含义 | 示例 |
~ | 按位非(NOT)/取反 | b = ~a |
& | 按位与(AND) | c = a & b |
| | 按位或(OR) | c = a | b |
^ | 按位异或(XOR) | c = a ^ b |
>> | 右移 | b = a >> 2 |
>>> | 无符号右移,左边空出的位以0填充 | b = a >>> 2 |
<< | 左移 | b = a << 1 |
位运算规则:
1、java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数符号位为0,负数为1。
例:
+42 的补码为:00101010
-42 的补码为:11010110(11010101+0000001)
负数取补码的规则:
① 取该数绝对值的补码
② 对该补码按位取反
③ 然后对整个数加1
2、不同类型的进行位运算,低精度类型的数据要先转成高精度的,缺的左位按位填满,正数则填0,负数则填1
例:byte a = 1;=>0000,0001
int b = 10;=>0000,0000,0000,0000,0000,0000,0000,1010
a =1; =>0000,0000,0000,0000,0000,0000,0000,0001
a&b =0000; =>0000,0000,0000,0000,0000,0000,0000,0000
3、移位运算
<<:将一个数的各二进制位全部左移若干位,右边补0;
>>:将一个数的各二进制位全部右移若干位,最高位则移入原来最高位的值(正数补0,负数补1)。
>>>:将一个数的各二进制位全部右移若干位,最高位补0;
三目运算符:?:
(expression) ?
三目运算符的规则是先对逻辑表达式expression求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果表达式返回false,则返回第三个操作数的值。
运算符优先级
从上往下优先级是由高到低。