一、+号:
- 正号
- 加号
- 字符串拼接
int a = 10;
int b = 20;
int result = a++ + b++ + ++a + ++b;//10+20+12+22 = 30+34 = 64
int i = 10;
i = i++;//10
i = i * i++;//20
i *= i++;//20
String str = hello;
System.out.println(str+10+20);//hello1020
System.out.println(10+20+str);//30hello
二、比较运算符
结果都是boolean类型。
int i1 = 33;
int i2 = 66;
System.out.println(i1 < i2);//false
三、条件/三目/三元运算符
语法: X ? Y : Z;
X: 是boolena类型的表达式,当x为 ture 的时候,执行Y表达式,当x为 false 的时候,执行Z表达式。
//比较三个数,输出最大数
int n1 = 10;
int n2 = 20;
int n3 = 30;
int n4 = n1 > n2 ? n1 : n2;//比较n1,n2,把较大数赋值给n4
int MAXNUM = n3 > n4 ? n3 : n4;//比较n3,n4
System.out.println(MAXNUM);
int MAXNUM = n1 > n2 ? n1 > (n3 ? n1 : n3) : (n2 > n3 ? n2 : n3);//合并
注意:若采用类型接收,Y 和 Z 的数据类型必须保持一致。
int age = 18;
String rs = age >= 18 ? "成年了" : age;//报错
System.out.println(age >= 18 ? "成年了" : age);//不报错
四、赋值运算符
使用赋值运算符不会发生类型转换。
五、逻辑运算符
逻辑运算符 | 描述 | 原理 |
---|---|---|
& | 与 并且 | 都为 ture 结果才是 ture |
| | 或 或者 | 能 ture 就 ture |
^ | 异或 | 同性相斥 异性相吸 |
! | 非 取反 | ture ==> false false ==> ture |
&& | 双与 短路与 | 都为 ture 结果才是 ture |
|| | 双或 短路或 | 能 ture 就 ture |
| 与 || 的区别:
| 计算所有的表达式。
|| 当前面为 ture 时,不会再计算后面的表达式。
& 计算所有的表达式。
&& 当前面为 false 时,不会再计算后面的表达式。
int n1 = 2;
int n2 = 5;
boolean rs = n1 > n2 & n1++ < n2;//false n1 = 3
boolean rs = n1 > n2 && n1++ < n2;//false n1 = 2
boolean rs = n1 > n2 | n1++ < n2;//false n1 = 3
boolean rs = n1 < n2 || n1++ < n2;//false n1 = 2
六、运算符优先级
由高到低 ↑ |
---|
. () |
++ – ~ ! |
* / % |
+ - |
<< >> >>> |
< > <= >= instanceof |
== != |
& |
^ |
| |
&& |
|| |
? : |
*= = /= %= |
+= -= /= %= |
>>>== &= ^= |= |