1 算数运算符
基本算术符号
算术运算符是对数值类型的变量进行运算的运算符
+ - * / // 加、减、乘、除
% // 取余,结果和被取余数同号。
// a % b == a - (int)a / b * b;
11 % 9 = 2;
-11 % 9 = -2;
11 % -9 = 2;
-11 % -9 = -2;
自增自减
++ 与 - - 同理
++i 先自增后赋值;i++ 先赋值后自增
int i = 10;
int j = ++i; // 等价于 i = i + 1; j = i; 此时 i = 10; j = 10`
int k = i++; // 等价于 k = i; i = i + 1; 此时 i = 11; k = 10`
i = i++; // 系统会先后执行 int temp = i; i = i + 1; i = temp
i = ++i; // 系统会先后执行 i = i + 1; int temp = i; i = temp
2 关系运算符
关系运算符结果都为 boolean 型,要么是 ture 要么是 false
== // 相等于。8 == 7 结果 false
!= // 不等于
< > // 小于、大于
<= >= // 小于等于、大于等于
instanceof // 检查是否是类的对象。"a" istanceof String 结果 ture
3 逻辑运算符
& 和 &&
用于连接多个关系表达式,结果也是一个 boolean 值
&& // 短路与。a b 同时为 ture,则结果为 ture,否则为 false。
& // 逻辑与。a b 同时为 ture,则结果为 ture,否则为 false。
& 和 && 区别
在于 a && b 的场合,a = false 时,则 b 不判断。而 & 会完成判断
int a = 1;
int b = 1;
if (a++ > 1 && ++b < 1) {
}
System.out.println(b); // b = 1
int a = 1;
int b = 1;
if (a++ > 1 & ++b < 1) {
}
System.out.println(b); // b = 2
| 和 ||
|| :短路或。a b 任一为 ture,则结果为 ture,否则为 false
| :逻辑或。a b 任一为 ture,则结果为 ture,否则为 false
两者的区别和 && 与 & 相似,若第一个为 ture ,则 || 不会判断第二个
! 和 ^
! :取反, a 为 ture,则结果为 false。反之为 ture
^:逻辑异或 ,a b 不同时,结果为 ture,否则为 false
4 赋值运算符
基本赋值运算符:=
符合赋值运算符:+= ; -= ; *= ; /= ; %= 等
a += b 等价于 a = a + b。其余同理
注意事项
1 运算顺序从右往左
int num = a + b + c; // 先运行(a + b + c),再结算int num =
2 运算符左边只能是变量,右边可以是变量、表达式、常量值。
3 复合赋值运算符会进行类型转换
byte b = 2; b += 3; // 此时 b += 3 等价于 b = (byte)(b + 3)
5 三元运算符
条件表达式 ? 表达式1 : 表达式2;
运算规则:如果条件表达式为 ture ,运算的结果是表达式1;反之为表达式2。
int a = 10;
int b = 11;
int result = (a == b ? a++ : b++); // 此时 a = 10 result = 11 b = 12
注意事项
1 表达式1 和 表达式2 要为可以赋给接受变量的类型(或可以自动转换,或进行强制转换)
2 三元运算符可以转成 if–else
3 三元运算符是一个整体。