复合赋值运算符是赋值运算符与算术、位等运算符结合的简写形式,如+=、-=、*=等,等价于先运算再赋值,例如a += 3等价于a = a + 3。

Java 中的赋值运算符本身不参与“复合运算”,但 Java 提供了复合赋值运算符(Compound Assignment Operators),它们是赋值运算符与算术、位运算等结合形成的简写形式,用于简化代码并提升可读性。
什么是复合赋值运算符
复合赋值运算符由一个二元运算符(如 +、-、*、/、%、、>>、&、|、^)后跟一个等号 = 组成。例如:+=、-=、 等。
它们的作用等价于:先对左侧变量和右侧表达式执行对应运算,再将结果赋值给左侧变量。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
常见复合赋值运算符及等价写法
以下是一些常用示例(假设 int a = 5;):
- a += 3; → 等价于 a = a + 3;(结果:a 变为 8)
- a *= 2; → 等价于 a = a * 2;(结果:a 变为 10)
- a %= 4; → 等价于 a = a % 4;(结果:a 变为 1)
- a → 等价于 a = a (左移一位,相当于 ×2)
- a &= 0x0F; → 等价于 a = a & 0x0F;(保留低 4 位)
需要注意的关键细节
复合赋值在语义上隐含一次类型转换,这可能影响结果:
- 当左侧变量是 byte、short 或 char 时,右侧表达式会先自动提升为 int 运算,再强制窄化回原类型。
- 例如:short s = 10; s += 5; 是合法的;但 s = s + 5; 会编译失败(因为 s + 5 结果是 int,不能直接赋给 short)。
- 复合赋值自带隐式强制转换,所以更安全简洁。
不支持的“复合”形式
Java 不支持以下写法(语法错误):
- a ++= 1;(++ 和 += 不能叠加)
- a =+ 1;(这是 a = +1;,即赋正值,不是复合运算)
- a ==+ 1;(语法错误,== 是关系运算符,不能和 = 组合)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










