Java 中的复合赋值运算符

2025年4月11日 | 阅读 5 分钟

复合赋值运算符是多个运算符的组合。它包含一个赋值运算符以及一个算术运算符或按位运算符。

在右操作数和左操作数之间执行指定的运算,并将结果赋给左操作数。

通常,这些运算符用于以更简洁的语法形式赋值。简而言之,复合赋值 运算符 可以代替赋值运算符使用。它也被称为简写运算符

复合赋值运算符的类型

赋值运算符有两种类型:

  1. 算术复合赋值运算符
  2. 按位复合赋值运算符

算术赋值运算符

注意:请勿更改运算符的顺序。这意味着先写要执行的操作符号,然后是赋值运算符。例如,=+ 是一个无效的复合赋值运算符。

以下是复合赋值运算符的类型。

  1. 加法赋值运算符
  2. 减法赋值运算符
  3. 乘法赋值运算符
  4. 除法赋值运算符
  5. 按位赋值运算符
运算符目的示例等效
+=加法a+=2a=a+2
-=减法a-=2a=a-2
*=乘法a*=2a=a*2
/=除法a/=2a=a/2
%=取模a%=2a=a%2

加法赋值运算符(+=)

加法赋值运算符用于将一个值加到一个变量上,然后将新值赋给同一个变量。它取运算符右边的值,将其加到变量左边的现有值上,然后将新值赋给该变量。它用(+=)符号表示。例如,请看以下程序。

示例

编译并运行

输出

15

减法赋值运算符(-=)

减法赋值运算符用于从一个变量中减去一个值,然后将新值赋给同一个变量。它取运算符右边的值,将其从变量左边的现有值中减去,然后将新值赋给该变量。它用(-=)符号表示。例如,请看以下程序。

示例

编译并运行

输出

5

乘法赋值运算符(*=)

乘法赋值运算符用于将一个值与一个变量相乘,然后将新值赋给同一个变量。它取运算符右边的值,将其乘以变量左边的现有值,然后将新值赋给该变量。它用(*=)符号表示。例如,请看以下程序。

示例

编译并运行

输出

50

除法赋值运算符(/=)

除法赋值运算符用于将一个值除以一个变量,然后将新值赋给同一个变量。它用(/=)符号表示。例如,请看以下程序。

示例

编译并运行

输出

2

模赋值运算符(%=)

模赋值运算符(%=)计算一个变量除以一个值的余数,然后将结果值赋给同一个变量。它取运算符右边的值,将其除以变量左边的当前值,然后将新值赋给变量左边的变量。

示例

编译并运行

输出

1

复合赋值运算符列表

在下表中,我们列出了所有复合赋值运算符及其相应的表达式。

类别运算符示例等效表达式描述
算术赋值+=a += ba = a + b将右操作数加到左操作数。
-=a -= ba = a - b从左操作数中减去右操作数。
*=a *= ba = a * b将左操作数乘以右操作数。
/=a /= ba = a / b将左操作数除以右操作数。
%=a %= ba = a % b赋除法的余数。
按位赋值&=a &= ba = a & b执行按位 AND 并将结果赋给左操作数。
^=a ^= ba = a ^ b执行按位 XOR 并将结果赋给左操作数。
<<=a <<= 2a = a << 2对位的左移并赋结果。
>>=a >>= 2a = a >> 2执行位的右移(符号传播)并赋结果。
>>>=a >>>= 2a = a >>> 2执行位的右移(零填充)并赋结果。

注意:Java 还有另一个按位运算符 ~(按位非)。它不能与赋值运算符一起使用,因为它作用于单个操作数。例如,~a。

下面的 Java 程序演示了复合赋值运算符的使用。

复合赋值运算符 Java 程序

示例

编译并运行

输出

z = x + y = 38
z += x = 63
z -= x = 38
z *= x = 950
z /= x = 0
z %= x = 5
z <<= 2 = 10
z >>= 2 = 5
z >>= 2 = 2
z &= x = 0
z ^= x = 12
z |= x = 12
s>>>= 4 = 18
~x = -13

使用复合赋值运算符的优点

  • 代码更短:减少在同一变量的处理中的重复。
  • 可读性更强:逻辑更易于一目了然。
  • 可维护性更佳:在更改变量时,出现拼写错误的可能性更小。
  • 效率:虽然现代编译器对两种形式都进行了优化,但复合形式通常更易于理解。