在大多数情况下,二者可以视为等价的。但是,当 x、y 的类型不同时,就体现出差异了。
定义 char count = '0',count += 2 可以正常运行,count = count + 2 则会出现编译错误。如图:

为什么会这样?因为 += 自动做了类型转换,详见 此问答。会将最终结果转换为左操作数的类型。
另外,+ 也会做隐式的类型转换,将 char 提升为 int。以下三个测试用例是等价的:

本文解析了 Java 中复合赋值运算符 `+=` 与普通赋值 `x = x + y` 的区别,通过 `char` 类型示例说明了 `+=` 自动类型转换的特性,以及 `+` 带来的隐式类型提升。
在大多数情况下,二者可以视为等价的。但是,当 x、y 的类型不同时,就体现出差异了。
定义 char count = '0',count += 2 可以正常运行,count = count + 2 则会出现编译错误。如图:

为什么会这样?因为 += 自动做了类型转换,详见 此问答。会将最终结果转换为左操作数的类型。
另外,+ 也会做隐式的类型转换,将 char 提升为 int。以下三个测试用例是等价的:

输入关键词搜索本站全部文章