Java运算符
- 算术运算符:+,-,*,/,%,++,——
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!= instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,/=,/=
++ –
-
a++ 先参与运算 在加一
-
++a 先加一在参与运算 输出语句也算运算
&& || !
-
与 && 两个都是真才是真 一个是假就是假
- 短路运算 懒惰运算 第一个条件能决定最终结果,第二个条件不回去执行。
- 第一个条件为假后:第二个条件是真是假都不影响最终结果,所有第二条件不去执行
-
或 | | 两个都是假才是假 一个是真就是真
- 非懒惰运算 长路运算 不管第一个条件是否能决定最终结果,第二个条件都要去执行
-
非 ! 如果是真变假 如果是假变真
一般在多个条件相连的时候使用
二进制的运算符
1. 位与运算符 &
运算规则:11为1
Byte a=4;
Byte b=6;
Byte res=a&b;
运算过程:
4的二进制: 0000 0100
6的二进制: 0000 0110
11为1: 0000 0100
结果是:4
2. 位或运算符 |
运算规则:1为1
Byte a=4;
Byte b=6;
Byte res=a|b;
运算过程:
4的二进制: 0000 0100
6的二进制: 0000 0110
有1为1: 0000 0110
结果是:6
3. 异或运算符 ^
运算规则:相同为0 不同为1
Byte a=4;
Byte b=6;
Byte res=a^b;
运算过程:
4的二进制: 0000 0100
6的二进制: 0000 0110
: 0000 0010
结果是:2
4. 位非运算符 ~
是一个一元运算符
运算规则:按位取反
Byte a=4;
Byte b=~a;
运算过程:
4的二进制: 0000 0100
按位取反: 1111 1011
结果是:-5
5.移位
5.1 右移 >> :每移动一位相当于除二
正数:二进制数字向右移动,左边空出的位置补0
byte num=5
byte r1=num>>2
byte num1=48
byte r2=num1>>3
5的二进制:0000 0101
移动后: 0000 0001 01
结果为:1
48的二进制: 0011 0000
移动后: 0000 0110 000
结果为:6
负数:向右移,空位补1 (只有负数右移空位补1)
byte num=-5;
byte r1=(byte)(num>>2);
-5的二进制:1111 1011
移动后: 1111 1110 11
结果为:-2
2.6.5.2左移 <<:每移动一位相当与乘2
byte num=-5;
byte r1=(byte)(num<<2);
-5的二进制:1111 1011
移动后 : 11 1110 1100
结果为:-20
Byte
Byte在内存里面能占八个字节
二进制最高位是1表示负数换算到十进制想知道负多少的规则:取反+1
例如: 00101101 à 45
-45 45=32+8+4+1=101101 11010011 à -45