1 运算符概述
✈️运算符是一种特殊的符号,用以表示数据的运算、赋值与比较等。
运算符分类:
2 算术运算符
🍎 算术运算符一览表
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +9 | 9 |
- | 负号 | a = 9; -a | -9 |
+ | 加 | 9 + 1 | 10 |
- | 减 | 9 - 1 | 8 |
* | 乘 | 9 * 9 | 81 |
/ | 除 | 9 / 3 | 3 |
% | 取模 | 11 % 9 | 2 |
++ | 自增:(前)先运算后取值;(后)先取值后运算 | a = 2; b = ++a; c = 2; d = c++; | a = 3; b =3; c =3; d = 2 |
- - | 自减:(前)先运算后取值;(后)先取值后运算 | a = 2; b = --a; c = 2; d = c–; | a = 1; b =1; c =1; d = 2 |
+ | 字符串相加 | "Hello " + “world!” | “Hello world!” |
2.1 算术运算符的使用
⭐️【注意】在 java 中,% 运算满足:
a % b = a - a / b * b
// 结果见注释 System.out.println(10 / 4); // 2 double a = 10 / 4; // 2.5 double b = 8 / 4; // 2.0, 精度提升 System.out.println(10 % 3); // 1 System.out.println(-10 % 3); // -1 System.out.println(10 % -3); // 1
2.2 面试题练习
⭐️question 1:
阅读下列代码,结果是什么?为什么?
int i = 1;
i = i ++;
System.out.println( i );
🅰️【答案】:结果为 1;在执行 i ++ 的时候 按照如下规则使用临时变量:
temp = i;
i = i + 1;
i = temp;
因此,首先在执行 i = i ++ 时,程序先将1存储起来,而后将 i ++ 变为 2,最后又把 1 赋值回 i ,故答案为 1 。
⭐️question 2:
阅读下列代码,结果是什么?为什么?
int i = 1;
i = ++ i;
System.out.println( i );
🅰️【答案】:结果为 2;在执行 ++ i 的时候 按照如下规则使用临时变量:
i = i + 1;
temp = i;
i = temp;
因此,首先在执行 i = ++ i 时,程序先将 i 自增,而后将 i 自增后的值赋值给 i 故答案为 2 。
3 关系运算符
✈️ 关系运算符的结果都是 boolean 类型,结果为 true 或 false。经常用于流程控制中。
🍎 关系运算符一览表
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 6 == 5 | false |
!= | 不等于 | 8 ! = 7 | true |
< | 小于 | 6 < 5 | false |
> | 大于 | 6 > 5 | true |
<= | 小于等于 | 6 <= 5 | false |
>= | 大于等于 | 6 >= 5 | true |
instanceof | 检查是否是类的对象 | “words” instanceof String | true |
4 逻辑运算符
✈️ 用于连接多个条件(多个关系表达式),最终结果为boolean类型。
🍎 逻辑运算符一览表
✈️【规则】若先不区分逻辑与短路,仅仅从且和或判断,对于 & 同真才真,对 | 同假才假。
⭐️ a&b:& 叫逻辑与,当 a 和 b 同时为true,则结果为true,否则为false;
⭐️ a&&b:&& 叫短路与,当 a 和 b 同时为true,则结果为true,否则为false;
⭐️ a | b:| 叫逻辑或,当 a 和 b 有一个为true,则结果为true,否则为false;
⭐️ a ll b:| 叫短路或,当 a 和 b 有一个为true ,则结果为true,否则为false;
⭐️ !a :叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true;
⭐️ a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false。
4.1 && 与 & 区别
&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false(一假则假,同真才真),效率高;
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低;
如果第一个条件为true,则两者没有区别。
4.2 || 与 | 区别
|| 短路或:如果第一个条件为true,则第二个条件不会判断(或者执行),最终结果为true(一真则真,同假才假),效率高;
| 逻辑或:无论第一个条件是否为true,都对第二个条件进行判断,效率低;
如果第一个条件为false,则两者没有区别。
5 赋值运算符
✈️ 将某个运算后的值赋给一个变量,比如 a = 1 + 1,即将 1 + 1运算后的值2赋给 a,a = 2。(运算顺序从右向左)
🍎【分类】:
= : a = 1;
+= : a += 1, 等价于 a = a + 1;
-= : a -= 1, 等价于 a = a - 1;
+= : a /= 1, 等价于 a = a / 1;
+= : a * = 1, 等价于 a = a * 1;
【注意】使用复合赋值运算会进行类型转换:
byte a = 10; a += 3; // 等价于 a = (byte)(a + 3)
6 三元运算符
✈️ 基本语法:
条件表达式 ? 表达式1 : 表达式2;
😎 运算规则:
条件表达式为 true ,则执行表达式1;反之,执行表达式2。