1. 算术运算符
int a = 3;
int b = 2;
//模运算 结果应该是1(取余数)--------除法和取模右操作数不可为零
System.out.println(a % b);
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);
// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
//两侧操作数大的时候像大的方向提升
System.out.println(d);
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2
2. 自增,自减
++是给变量的值+1,--是给变量的值-1。
int a = 1;
a++; // 后置++ 表示给a的值加1,此时a的值为2
System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
System.out.println(a); // 输出3
++a; // 前置++ 表示给a的值加1
System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
System.out.println(a); // 输出5
// --操作符给操作-1,与++含义类似
3. 逻辑运算符
逻辑运算符有以下三种(结果为boolean类型)---> 结果只有 true 或 false:
&& ----- 有假就假,都为真才为真 (串联)
|| ----- 有真就为真 (并联)
! ----- 取反
//短路求值(左边够用了就不要右边的语句了)
// 打印 false,如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
System.out.println(10 > 20 && 10 / 0 == 0);
// 打印 true,如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
System.out.println(10 < 20 || 10 / 0 == 0);
4. 位运算符
按位与 & ----- 都为1才为1 (串联)
按位或 || ----- 有1就为1 (并联)
按位异或 ^ ----- 相同为0,不同为1
按位取反 ~ ----- 0变1,1变0
5. 移位运算符(了解)
左移: << (左边移掉,右边加0 --> 乘法) ------ 0000 1011 << 1 = 0001 0110 11*2^1
------ 0000 1011 << 2 = 0010 1100 11*2^2
右移 : >> (右边移掉,左边补符号位)------ 0000 1011 >> 1 = 0000 0101 5 11/2^1
------ 0000 1011 >> 2 = 0000 0010 2 11/2^2
-1 ---> 1111 1111 >> 1 = 1111 1111
1111 1111 >>> 1 = 0111 1111 (>>>:无符号右移)
7. 条件运算符(三目运算符)
表达式1(必须为布尔表达式) ?表达式2:表达式3 --->> 若表达式1为真,则执行表达式1,否则执行表达式2
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
8. 运算符优先级
口诀:单算移关与,异或逻条赋