文章目录
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
算术运算符
- 二元 + - * / %
- 一元 ++ –
对于数值类型,最小使用计算的数值类型为 int
System.out.println(5 % 2); // 1
System.out.println(4 / 2); // 2
System.out.println(5 / 2); // 2 自动舍去法取整
System.out.println(5.0 / 2); // 2.5
// 算术表达式的结果,也有一个数据类型,它的数据类型为表达式中范围最大的那个数据的数据类型。
// 对于数值类型,最小使用的数值类型为 int
byte b1 = 10;
byte b2 = 20;
// byte b3 = b1 + b2; // 会报错,因为计算时实际上是 int + int
int b3 = b1 + b2;
- i++ 表示先使用 i 的值,再给 i 的值加 1。
- ++i 表示先给 i 的值加 1,再使用 i 的值。
// 一元运算符 ++ --
int i = 0;
int j = i++;
System.out.println(i); // 1
System.out.println(j); // 0, i++ 表示先使用 i 的值,再给 i 的值加 1。int m = 0;
int n = ++m;
System.out.println(m); // 1
System.out.println(n); // 1, ++i 表示先给 i 的值加 1,再使用 i 的值。
赋值运算符
- = += -= *= /= %=
复合赋值运算符,不会改变数据的类型。
byte b5 = 3;
// b5 = b5 + 10; // 报错,因为赋值运算符的右边实际上是 int + int
// 复合赋值运算符,不会改变数据的类型
b5 += 10; // 13, 这样是可以的,因为 += 是复合赋值运算符,它不会改变原有的数据类型。
关系运算符
- == != > >= < <=
System.out.println(b5 == 13); // true
System.out.println(b5 == 13.0); // true
逻辑运算符
- 非短路逻辑运算符 & | ! ^
- 短路逻辑运算符 && ||
expr1 逻辑运算符 expr2
每个表达式的数据类型都是布尔类型(true 或 false)。
- & 逻辑与,两个表达式都为 true 时,结果才为 true,否则为 false。两个表达式都必须计算出结果。
- | 逻辑或,任意一个表达式为 true 时,结果就为 true,否则为 false。两个表达式都必须计算出结果。
- ! 逻辑非,一元逻辑运算符,表示取反。
- && 短路逻辑与,如果根据第一个表达式已经能够推导出结果,后面的表达式就不会执行。
- || 短路逻辑非,如果根据第一个表达式已经能够推导出结果,后面的表达式就不会执行。
int i5 = 10;
boolean b6 = (i5 > 6) & (i5 < 9); // false
System.out.println(b6);
b6 = (i5 > 20) && (i5++ < 9); // 第二个表达式没有执行(短路了),所以 i5 的值不会变化
System.out.println(b6); // false
System.out.println(i5); // 10
三元运算符
- exp1 ? exp2 : exp3
如果 expr1 的结果为 true,就执行 expr2,并将其结果返回;否则就执行 expr3,将其结果返回。
int i6;
i6 = i5 > 1 ? 3 + 3 : 4 + 4;
System.out.println(i6); // 6