mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
800 字
2 分钟
Java运算符与表达式详解
2026-02-08

++i和i++的区别是多少Java新手的噩梦?我当年面试的时候就被问倒过。还有位运算,虽然平时用得少,但在权限系统和性能优化场景下简直是神器。这篇文章把Java的运算符和表达式系统地梳理了一遍。

Java运算符与表达式详解#

运算符#

运算符就是告诉编译器执行特定数学或逻辑操作的符号。Java的运算符很丰富,但有些细节不注意就会踩坑。

1. 算术运算符#

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(余数)a % b
++自增a++++a
自减a----a

注意:整数除法会直接截断小数部分,比如 5 / 2 结果是 2 不是 2.5。自增自减的前缀和后缀——前缀是先加后用,后缀是先用后加。

2. 关系运算符#

运算符描述示例
==等于a == b
!=不等于a != b
>大于a > b
<小于a < b
>=大于等于a >= b
<=小于等于a <= b

3. 逻辑运算符#

运算符描述短路特性
&&逻辑与短路
||逻辑或短路
!逻辑非

短路特性很实用——&&左边为false就不算右边了,||左边为true也不算右边了。可以用来做空指针保护,比如 if (obj != null && obj.getValue() > 0)

4. 位运算符#

运算符描述示例
&按位与a & b
|按位或a | b
^按位异或a ^ b
~按位取反~a
<<左移a << b
>>右移a >> b
>>>无符号右移a >>> b

位运算平时用得不多,但做权限系统时用按位与或非常方便——用一个int就能表示多个权限的组合。

5. 赋值运算符#

=+=-=*=/=%= 等,就是简写,比如 a += b 等价于 a = a + b

6. 三元运算符#

result = condition ? expression1 : expression2;

简洁好用,但别嵌套使用,否则可读性很差。

运算符优先级#

从高到低:括号 > 一元 > 乘除 > 加减 > 移位 > 关系 > 位运算 > 逻辑运算 > 三元 > 赋值。

记不住就加括号,括号永远不会错,而且让代码更清晰。

常见陷阱#

  1. 混淆==和=——if (a = b) 语法上是对的,但意思完全不对。这个错误太经典了,编译器还不报错,因为语法没问题。
  2. 整数溢出——计算结果超出类型范围,比如 int 最大值加1变成负数。
  3. 浮点数精度——0.1 + 0.2 != 0.3,需要精确计算用 BigDecimal
  4. 字符串比较用==——==比较的是引用,字符串内容比较要用 equals()

💡 实战贴士: 用 == 比较 Integer 时要注意,-128 到 127 之间的整数会缓存,超出这个范围即使值相同,== 也会返回 false。所以包装类型的比较永远用 equals()

最佳实践#

  1. 复杂表达式加括号——提高可读性
  2. 三元运算符别嵌套——超过一层就用if-else
  3. 注意整数除法——需要小数结果就用浮点数
  4. 利用短路特性——可以省掉不必要的条件判断
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

部分信息可能已经过时

目录