复合赋值运算符是将算术、位运算与赋值合并为一个原子操作的符号(如+=、-=、*=等),自动隐式转换类型,共12个,不包括++/--;需注意副作用、精度丢失及string等引用类型的不可变性。

Java 中的赋值运算符本身不参与“复合运算”,但它的扩展形式——复合赋值运算符(如 +=、-=、*= 等)才是实现“先运算再赋值”这一复合操作的核心机制。
什么是复合赋值运算符
复合赋值运算符是将算术运算与赋值操作合并为一个原子动作的符号,语法简洁且语义明确。例如:
-
a += b等价于a = a + b(但有隐式类型转换细节) -
count *= 2等价于count = count * 2 -
flag &= mask等价于flag = flag & mask(位运算也适用)
复合赋值会自动处理类型转换
这是容易忽略的关键点:使用复合赋值时,Java 会自动插入强制类型转换,避免编译错误。比如:
short s = 10; s += 5; // ✅ 合法:等价于 s = (short)(s + 5) // s = s + 5; ❌ 编译失败:int + short → int,不能直接赋给 short
原因:普通加法 s + 5 中,short 会提升为 int,结果是 int 类型;而 += 隐含了向左操作数类型的强制转换。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
支持的复合赋值运算符有哪些
Java 支持以下常见复合赋值运算符(共 12 个),全部遵循“运算后赋值并自动转类型”的规则:
- 算术类:
+=、-=、*=、/=、%= - 位移类:
、<code>>>=、>>>= - 逻辑位运算:
&=、|=、^=
注意:++ 和 -- 是自增/自减运算符,不属于复合赋值运算符,它们不带等号,也不执行“运算+赋值”的通用模式。
使用时的注意事项
虽然写法简洁,但需警惕副作用和可读性问题:
- 不要在表达式中嵌套使用,如
a += b += c—— 虽然语法合法(右结合),但易引发逻辑混淆 - 涉及浮点数时注意精度丢失,如
float f = 1.1f; f *= 10;结果可能不是精确的11.0f - 对对象引用使用
+=(如String)会创建新对象,不是原地修改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










