Java算术运算符包括加减乘除取余及正负号,要求操作数为数值类型,自动类型提升但需防溢出、除零异常和结合性陷阱。

Java 中的算术运算符用于执行基本数学计算,包括加(+)、减(−)、乘(*)、除(/)、取余(%),以及一元正负号(+、−)。它们用法直观,但类型转换、优先级和边界情况容易出错,需特别注意。
基础用法与操作数类型
算术运算符要求操作数为数值类型(byte、short、char、int、long、float、double),不支持 boolean、String(除 + 作字符串拼接外)或 null。Java 会按规则自动提升类型:
- 两个 byte/short/char 相运算,结果自动提升为 int
- 若操作数含 long,则结果为 long;含 float 则为 float;含 double 则为 double
- 例如:byte a = 10, b = 20; int c = a + b; 合法,但 byte d = a + b; 编译报错(需显式强转)
除法与取余的特殊行为
整数除法(/)向零取整,不四舍五入;取余(%)结果符号与被除数一致:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 7 / 3 → 2,−7 / 3 → −2,7 / −3 → −2
- 7 % 3 → 1,−7 % 3 → −1,7 % −3 → 1
- 除零会抛异常:整数除零触发 ArithmeticException;浮点数除零得 Infinity 或 NaN
自增自减与结合性陷阱
++ 和 -- 有前置(先变后用)与后置(先用后变)之分,且仅适用于变量,不能用于字面量或表达式:
立即学习“Java免费学习笔记(深入)”;
- int i = 5; int j = i++ + ++i; 执行后 i=7,j=11(顺序:j = 5 + 7)
- i++ + i++ 在同一表达式中多次修改同一变量,行为确定但易读性差,应避免
- ++5 或 (a + b)++ 是非法的
隐式类型转换与溢出风险
算术运算不检查溢出,超出范围时静默截断:
- int max = Integer.MAX_VALUE; System.out.println(max + 1); // 输出 -2147483648
- 如需安全运算,可使用 Math.addExact() 等方法(Java 8+),溢出时抛 ArithmeticException
- 混合类型运算时,避免依赖隐式提升,建议显式声明目标类型或使用 long/double 防止精度丢失

















