Java 运算符完整知识点
一、运算符分类(按功能)
- 算术运算符
- 赋值运算符
- 关系(比较)运算符
- 逻辑运算符
- 位运算符
- 条件运算符(三目运算符)
- instanceof 运算符
- 运算符优先级与结合性
二、算术运算符
用于数学计算。
| 运算符 | 作用 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 / 字符串连接 | 3+2 | 5 |
- | 减法 | 5-2 | 3 |
* | 乘法 | 3*4 | 12 |
/ | 除法 | 10/3 | 3(整数相除取整) |
% | 取余(模运算) | 10%3 | 1 |
++ | 自增 | a++ / ++a | a+1 |
-- | 自减 | a-- / --a | a-1 |
重点:自增/自减
- 前++:先加1,再使用
int a = 5; int b = ++a; // a=6, b=6 - 后++:先使用,再加1
int a = 5; int b = a++; // a=6, b=5
-- 同理。
三、赋值运算符
用于给变量赋值。
| 运算符 | 作用 | 等价于 |
|---|---|---|
= | 赋值 | a=10 |
+= | 加后赋值 | a += 5 → a = a+5 |
-= | 减后赋值 | a -= 3 → a = a-3 |
*= | 乘后赋值 | a = 2 → a = a2 |
/= | 除后赋值 | a /= 2 → a = a/2 |
%= | 取余后赋值 | a %= 2 → a = a%2 |
特点:自动强制类型转换
short s = 1;
s += 1; // 合法,等价 s=(short)(s+1)
s = s+1; // 报错,int→short需强转
四、关系(比较)运算符
结果一定是 boolean(true/false)
| 运算符 | 含义 |
|---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
注意:
=是赋值,==才是比较- 浮点数比较容易精度丢失,不建议直接用
==
五、逻辑运算符
操作 boolean,结果 boolean。
| 运算符 | 名称 | 规则 |
|---|---|---|
&& | 短路与 | 全真才真,一假即假 |
|| | 短路或 | 一真即真,全假才假 |
! | 逻辑非 | 取反 |
& | 非短路与 | 两边都执行 |
| | 非短路或 | 两边都执行 |
重点:短路特性
&&:左边为 false,右边不执行||:左边为 true,右边不执行
示例:
int a = 5;
if (false && (a++ > 0)) {}
System.out.println(a); // 5,右边没执行
六、位运算符
对整数二进制位操作,速度极快。
| 运算符 | 作用 |
|---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
<< | 左移 |
>> | 右移(带符号) |
>>> | 无符号右移 |
常用规律
x << 1≈ x * 2x >> 1≈ x / 2a ^ a = 0,a ^ 0 = a(可用于交换变量)
七、条件运算符(三目运算符)
格式:
条件 ? 表达式1 : 表达式2
- 条件为 true → 执行表达式1
- 条件为 false → 执行表达式2
示例:
int max = a > b ? a : b;
八、instanceof 运算符
判断对象是否属于某个类/接口类型。
obj instanceof ClassName
返回 boolean。
九、运算符优先级(从高到低,必背)
优先级越高越先算。
()括号++--自增自减!~非、取反*/%+-<<>>>>><<=>>=instanceof==!=&^|&&||? :- 赋值运算符
=+=等
口诀记忆
单目算术移位关,逻辑三目赋值完。
十、结合性
- 大部分从左到右
- 单目运算符、赋值、三目运算符:从右到左
例如:
a = b = c = 10;
// 等价 c=10; b=c; a=b;
十一、高频面试点总结
++前后区别&&与&的区别(短路)==和=区别- 位运算快速乘除、交换两数
- 运算符优先级判断表达式结果