🐵由于Java的操作符和C语言的操作符有很多相同之处,所以本篇文章只讲解Java操作符的重点和与C语言的不同点
1. 四则运算操作符:+ - * / %
1.做除法和取模时右操作数不能为0;
2.取模的有操作数可以是double类型,但是没有意义,一般对整形进行取模;
3.当操作符两边的操作数不同时,向范围小的向范围大的类型提升
4.当操作符两边的操作数大小小于4个字节时,会先提升到int型在进行计算
2. 增量操作符
+=、-=、*=、/=、%=
3. 自增,自减操作符
++、--
4. 关系操作符
==、!=、>、<、>=、<=
关系操作符的运算结果是boolean类型
int a = 10;
int b = 20;
System.out.println(a == b); //打印结果:false
5. 逻辑操作符
&&、||、!
逻辑操作符的运算结果是boolean类型
其中!后面必须是布尔表达式,不能有以下写法:
if (!a) { //编译报错
...
}
while (!a) { //编译报错
...
}
5.1短路求值
表达式1 && 表达式2:当表达式1结果为false,则整个表达式结果就为false,无需计算表达式2
表达式1 || 表达式2:当表达式1结果为true,则整个表达式结果就为true,无需计算表达式2
6. 位操作符
&、|、~、^
7. 移位操作符
<<、>>、>>>
<<(左移操作符):二进制比特位左侧位舍去,右侧位取0
int a = 10;//1010
System.out.println(a << 1);//20
int b = -10;
System.out.println(b << 1);//-20
int c = 1;
System.out.println(c << 2);//4
总结:一个整数左移n位,相当于这个数乘上2^n;
>>(右移操作符):二进制比特位右侧位舍去,左侧位取符号位
>>>(无符号右移操作符):二进制比特位右侧位舍去,左侧位取0
8. 条件操作符
表达式1 ? 表达式2 : 表达式3
1.表达式2和表达式3需要是同类型的,除非会进行自动类型转换(隐式)或我们主动进行强制类型转换,否则会报错
int a = 10;
int b = 20;
double c = 1;
int ret = a < b ? (int)c : b;
int a = 10;
int b = 20;
byte c = 5;
int ret = a < b ? c : b; //c会自动类型转换为int型
2.条件运算表达式不能单独存在,其结果必须被使用,否则会报错
if ((a < b ? c : b) > 1) { //被使用
...
}
int ret = a < b ? c : b //被使用
例题:
System.out.println(false == true ? true : true == false ? false : false);
由于表达式1的结果为false,所以执行表达式3,表达式3的结果为false,所以整个表达式的结果为false
🙉本篇文章至此结束,有许多操作符都没有进行讲解是因为在之前的文章《操作符重点讲解》有过详细讲解