运算符
运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。
运算符共分以下几种:
Ø 算术运算符
Ø 赋值运算符
Ø 比较运算符
Ø 逻辑运算符
Ø 位运算符
算数运算符:
赋值运算符
比较运算符
运算符 |
含义 |
示例 |
== |
等于 |
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) ? if-true-statement : if-false-statement;
三目运算符的规则是先对逻辑表达式expression求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果表达式返回false,则返回第三个操作数的值。
运算符优先级
从上往下优先级是由高到低。