1456 字
7 分钟

Java运算符与表达式详解

2026-02-08
浏览量 加载中...

Java运算符与表达式详解#

什么是运算符?#

运算符是一种特殊的符号,用于告诉编译器执行特定的数学或逻辑操作。Java提供了丰富的运算符,用于各种操作。

Java运算符的分类#

Java的运算符可以分为以下几类:

1. 算术运算符#

算术运算符用于执行基本的数学运算:

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

注意

  • 对于整数除法,结果会向下取整(截断小数部分)
  • 自增和自减运算符有前缀和后缀两种形式,它们的执行时机不同

2. 关系运算符#

关系运算符用于比较两个值的关系,返回布尔值:

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

3. 逻辑运算符#

逻辑运算符用于组合布尔表达式:

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

短路特性

  • &&:如果第一个操作数为false,就不会计算第二个操作数
  • \|\|:如果第一个操作数为true,就不会计算第二个操作数

4. 位运算符#

位运算符用于对整数类型的二进制位进行操作:

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

5. 赋值运算符#

赋值运算符用于给变量赋值:

运算符描述示例等价于
=简单赋值a = b-
+=加后赋值a += ba = a + b
-=减后赋值a -= ba = a - b
*=乘后赋值a *= ba = a * b
/=除后赋值a /= ba = a / b
%=取模后赋值a %= ba = a % b
&=按位与后赋值a &= ba = a & b
|=按位或后赋值a |= ba = a | b
^=按位异或后赋值a ^= ba = a ^ b
<<=左移后赋值a <<= ba = a << b
>>=右移后赋值a >>= ba = a >> b
>>>=无符号右移后赋值a >>>= ba = a >>> b

6. 条件运算符#

条件运算符(三元运算符)是Java中唯一的三元运算符:

result = condition ? expression1 : expression2;

如果condition为true,返回expression1的值;否则返回expression2的值。

7. 其他运算符#

运算符描述示例
instanceof检查对象是否是特定类的实例obj instanceof Class
new创建新对象new Class()
.访问对象的成员obj.member
[]数组访问array[index]
()方法调用method()

运算符的优先级#

Java运算符的优先级从高到低如下:

  1. 括号 ()
  2. 一元运算符 ++, --, !, ~
  3. 算术运算符(先乘除后加减)
  4. 位移运算符 <<, >>, >>>
  5. 关系运算符
  6. 位运算符 &, ^, |
  7. 逻辑运算符 &&, \|\|
  8. 条件运算符 ? :
  9. 赋值运算符

注意:当不确定优先级时,使用括号来明确运算顺序。

表达式#

表达式是由运算符和操作数组成的序列,计算后会产生一个值。

表达式的类型#

表达式的类型由其计算结果的类型决定:

int a = 10;
int b = 20;
int sum = a + b; // 算术表达式,类型为int
boolean result = a > b; // 关系表达式,类型为boolean
String message = "Hello" + " World"; // 字符串连接表达式,类型为String

表达式的求值顺序#

Java表达式的求值顺序主要遵循以下规则:

  1. 从左到右求值
  2. 遵循运算符优先级
  3. 短路运算符的特殊处理

最佳实践#

  1. 使用括号提高可读性:当表达式复杂时,使用括号来明确运算顺序,提高代码可读性。

  2. 避免过度使用三元运算符:虽然三元运算符简洁,但过度使用会降低代码可读性。

  3. 注意整数除法:整数除法会截断小数部分,如需保留小数,应使用浮点数。

  4. 合理使用短路运算符:利用短路运算符的特性可以提高代码效率。

  5. 注意自增自减运算符的位置:前缀和后缀形式的执行时机不同,应根据需要选择合适的形式。

常见陷阱#

  1. 混淆==和===是比较运算符,=是赋值运算符。

  2. 整数溢出:当计算结果超出数据类型的范围时,会发生溢出。

  3. 浮点数精度问题:浮点数计算可能存在精度问题,如需精确计算,应使用BigDecimal。

  4. 字符串比较:使用==比较字符串会比较引用,应使用equals()方法比较内容。

总结#

运算符和表达式是Java编程的基础,掌握它们对于编写正确的Java代码至关重要。本文介绍了Java的各种运算符及其用法,以及表达式的相关知识。希望本文能够帮助你更好地理解Java的运算符和表达式,为后续的学习打下坚实的基础。

练习#

  1. 编写一个程序,演示各种算术运算符的使用。
  2. 编写一个程序,使用逻辑运算符和短路特性。
  3. 编写一个程序,演示位运算符的使用。
  4. 编写一个程序,使用条件运算符实现简单的条件判断。
  5. 分析并修复以下代码中的问题:
int a = 10;
int b = 20;
if (a = b) {
System.out.println("a equals b");
}

通过这些练习,你将更加熟悉Java的运算符和表达式,为后续的学习做好准备。

支持与分享

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

赞助
Java运算符与表达式详解
https://blog.vanilla.net.cn/posts/2026-02-05-java-operators-and-expressions/
作者
鹁鸪
发布于
2026-02-08
许可协议
CC BY-NC-SA 4.0

评论区

目录