Java运算符
运算符分类
根据 功能: 算术,关系,逻辑,赋值,位…
根据 操作数的个数: 一元,二元,三元
算数运算符
自增自减运算符
关系运算符
逻辑运算符
&& 与
|| 或
!非
语法:
参与逻辑运算的操作数 必须是 boolean数据类型的。
运算规则:
&& :一假(false)为 假
||:一真 (true) 为 真
!:取反 !true -> false !false -> true
&& 和 & ,|| 和 | 的区别。
1) && , || 逻辑运算符
短路与 ,短路或
2) & , | 位运算符
非短路与 ,非短路或 每个表达式都需要运算
public static void main(String []args){
// 规则一样
System.out.println(true & false);// false
System.out.println(true | false);// true
//---------------短路与--------------------------
int y = 6;
// false 短路了
boolean r = false && ++y > 6 && true && false;
//第一个为false 后面全为&& 则后面不运算
System.out.println(r);//false
System.out.println(y);// 6
//----------------非短路---------------------------------
int y = 6;
// false & 7 >6 & true & false
boolean r = false & ++y > 6 & true & false;
System.out.println(r);//false
System.out.println(y);// 7
}
扩展赋值运算符
运算规则:
a += b -> a = a + b
条件运算符
运算规则:
表达式一 要求必须是boolean类型的。
表达式一 运算的结果 是 true : 选择表达式二 的值; false: 选择表达式三的值。
位运算符
位: bit 二进制
二进制数字的表示方式有三种: 原码,反码,补码;
正数的原码、反码、补码都相同
负数的反码为原码按位取反
负数的补码为原码按位取反+1
原码:第一位为符号位 0表示正数,1表示负数
+5 | 00000000 - 00000000 - 00000000- 00000101 |
---|---|
-5 | 10000000 - 00000000 - 00000000- 00000101 |
反码:
+5 | 00000000 - 00000000 - 00000000- 00000101 |
---|---|
-5 | 11111111-11111111-11111111-11111010 |
补码:(Java)
+5 | 00000000 - 00000000 - 00000000- 00000101 |
---|---|
-5 | 11111111-11111111-11111111-11111011 |
二进制正数 -> 二进制负数 正数取反 + 1
加法:
0+0 -> 0
1 +0 ->1
0+1 -> 1
1 + 1 -> 10
负数 -> 正数 -1 ,再取反
减法:
0-0 -> 0
1-0 -> 1
1-1 -> 0
0-1 ->1(借1当2)
& | ^ ~ << >> >>>
运算规则:
& 与
1&1 -> 1
1&0 -> 0
0&1 -> 0
0&0 -> 0
| 或
1|1 -> 1
1|0 -> 1
0|1 -> 1
0|0 -> 0
^ 异或
相同位 0,不同为 1
1^1 -> 0
0^0 -> 0
1^0 -> 1
0^1 -> 1
~非
取反 0 ->1 1 -> 0
<< 左移
向左移动 n位, 右边低位 用0 补位。
规律:一个正数 向左移动,相当于这个正数乘以2 的移动位数次方。
>> 右移
向右移动 n位,左边高位是什么就用什么补位。
规律一个正数 向右移动,相当于 这个正数除以2的移动位数次方。
>>> 无符号右移
向右移动 n位,左边高位用0补位。