目录
1、运算符分布图
2、基本运算符
2.1 算法运算符
System.out.println(5/2);整型/整型 = 整型
System.out.println(5.0/2);存在浮点型则结果 = 浮点型
System.out.println(5/0);整型不可以÷0 会报错
System.out.println(5.0/0);浮点型可以÷0 结果为无穷大 Infinity
2.2 自增自减运算符
int m=10;
int n=10;
int x =++m;
int y =n++;
System.out.println("x"+x);x=11
System.out.println("y"+y);y=10
2.2.1 面试小问题
int x=0;
x=x++;
System.out.println("x的值为:"+x);
上述代码中x的值为多少
结果为:0
解释:在一次运算里面,同一个变量的赋值只认第一次,所有只认了X=X,后面的X=X+1不生效
2.3 逻辑运算符
&& 、||、 !
&&(断路逻辑与):如果能够提前判断结果,就不在继续执行,
2.4 三目运算符
code = res1==0? 10:11;
上与下等价
int res1=0;
int code;
if(res1==0) {
code=10;
}else {
code=11;
}
3、位运算符
3.1 按位运算
按位与运算&(补码运算) | 同为1则为1,否则为0 |
按位或运算|(补码运算) | 有1则为1,否则为0 |
按位取反 ~(补码运算) | 所有位取反,包括符号位 |
按位异或 ^(补码运算) | 相同为0,不同为1 |
3.2 移位运算
1、左移<<(补码运算):高位左移 低位补0,包括符号位,溢出舍去
例如:-8<<2 = -8*2^2 (乘法)
2、有符号右移>>(补码运算):低位右移 空出来的高位补跟符号位相同的数字
例如:-16>>2 = -16/2^2 (除法)
3、无符号右移>>>(补码运算):低位右移 空出来的高位统一补0
计算时注意数据的类型
3.3位运算符使用场景
1、异或:
6^0=0110 ^ 0 =6 任何数和0异或还是本身
6^6=0 任何数和本身异或是0
1.1、可以把里面相同的去掉
例如:6^4^2^4^8^6^2=8
1.2、不开辟新参数实现两个数交换
例如:
int u=10;
int o=11;
u=u^o;
o=u^o;//o=u^o^o
u=u^o;//u=u^o^u^o^o
System.out.println("u的值为:"+u);
System.out.println("o的值为:"+o);