JAVA运算符
运算由表达式表示
表达式由运算符和运算分量组成
运算分量可以是常量、变量、方法调用
运算符按功能划分:
赋值运算 算术运算 关系运算 逻辑运算 条件运算 位运算等
赋值运算和算术运算
按运算符操作的操作数数量划分为三类
一元运算符 ++ -- +(正) -(负)
二元运算符 + - * / % < > <= >= != (<>)
三元运算符 ?:
int i = 3;
int b = ++i; //b= 4 i先自增1再赋值给b
int c = i++; //c =4 i先赋值给c在自增
关系运算和逻辑运算
关系运算符
< > <= >= != (<>) ==
逻辑运算符
&& 逻辑与 有假即为假 全部为真才为真
|| 逻辑或 有真即为真 全部为假才为假
! 逻辑非 取反
关系运算符和逻辑运算符的优先级
1.!(取反)
2.> >= < <=
3.== !=
4. &&
5. ||
位、赋值、条件运算符
位运算符
- ~按位取反 1 = ~0
- &按位与 0&1 = 0 1&1 =1 0&0 = 0
- |按位或 0|1 = 1 1|1 =1 0|0 = 0
- ^按位异或 0^1 = 1 1^1 =0 0^0 =0
5.移位运算符 <<算符左移运算 >>算术右移运算 >>>逻辑右移运算符
正数取反
~0000 0000 0011 0101 ~53
第一步1111 1111 1100 1010 每一位取反
第二步1111 1111 1100 1001 再减1
第三步1000 0000 0011 0110 第一位保持不动其他在取反 = -54
负数取反
第二步改为加1其他不变
与
0000 0000 0011 0101 53
&0000 0000 0001 0110 22
0000 0000 0001 0100 20
或
0000 0000 0011 0101 53
| 0000 0000 0001 0110 22
0000 0000 0011 0111 55
异或
0000 0000 0011 0101 53
^ 0000 0000 0001 0110 22
0000 0000 0010 0011 35
左移
0000 0000 0000 0100 4<<3
0000 0000 0010 0000 64 (4*(2^3))
右移
0000 0000 0000 1100 12>>2
0000 0000 0000 0011 3 (12/(2^2))
1111 1111 1111 0100 -12>>2
1111 1111 1111 1101 -3
优先级别
~ << >> >>> & ^ |
扩展赋值运算符
+= -= *= /= %= ^=
&= |= >>= <<= >>>=
条件运算符
逻辑表达式? 表达式1 : 表达式2;