1、算术运算符
A、整数相除只能得到整数
B、常量不可以用++
C、++a 先自增,再运算 a++先运算,再自增,减法相同
a=1; b=a++;结果为 a=2,b=1;
a=1; b=++a;结果为 a=2,b=2;
x=4;
y=(x++)+(++x)+(x*10)
结果
y=4+6+6*10=70;
D、运算规则从左向右
2、赋值运算符
y+=20;结果y=y+20
3、比较运算符
结果为布尔型只有true和false两种
4、逻辑运算符
A、 ,左边是false,右边不执行了
x=3,y=4
boolean b1=((x++==3)&&(++y==4))
// x=4,y=5因为左边是true 所以右边执行y=5
boolean b1=((++x==3)&&(++y==4))
// x=4,y=4因为左边是false所以右边不执行
B、||具有短路效果,左边是true,右边不执行了
D、|和&则无短路效果两边都要计算。
5、位运算符
&两边为数据做的是位运算,两边是布尔值时用逻辑运算。
A: 按位取反运算是补码运算
System.out.println(~3)//输出结果为-4
因为运算时需要先求补码。
3的补码为:00000000 00000000 00000000 00000011
~3为 :11111111 11111111 11111111 11111100(补码)
因为其为补码所以需要求原码才能得到最终结果
11111111 11111111 11111111 11111011(反码)
10000000 00000000 00000000 00000100(原码)
最终结果为-4
B:一个数被同一个数异或两次结果还为之前的数,可以用来数据加密。
C:两个数交换:
a=a^b;
b=a^b;
a=a^b;//第一种方法
a=a+b;
b=a-b;
a=a-b;//第二种方法
b=(a+b)- (a=b)//第三种方法
D:右移>> 最高为是0则补0,最高为是1则补1;
无符号位右移 >>> 无论最高位是0还是1都是用0补齐。
a<<b 把a向左移动b位 a>>b 把a向右移动b位
6、三目运算符
比较表达式?表达式1:表达式2。表达式结果为true则运行第一个式子,反之运行第二个式子。