这些运算符的左操作数必须是非最终变量或数组的元素。右手操作数必须与左手操作数兼容。这意味着这些类型必须相同,或者必须通过装箱,拆箱或加宽的组合将右操作数类型转换为左操作数类型。(有关完整的详细信息,请参阅JLS 5.2。)
JLS 15.26.2将“操作和分配”运算符的确切含义指定为:
形式的复合赋值表达式E1 op= E2等效于E1 = (T) ((E1) op (E2)),其中T是的类型E1,不同之处在于该表达式E1仅被评估一次。
注意,在最终分配之前有一个隐式类型转换。
1。 =
简单赋值运算符:将右侧操作数的值分配给左侧操作数。
示例:c = a + b将的值添加a + b到的值c并将其分配给c
2。 +=
“添加并分配”运算符:将右侧操作数的值添加到左侧操作数的值,并将结果分配给左侧操作数。如果左侧操作数的类型为String,则这是“连接并分配”运算符。
例子:c += a大致与c = c + a
3。 -=
“减去并分配”运算符:从左侧操作数的值中减去右侧操作数的值,并将结果分配给左侧操作数。
例子:c -= a大致与c = c - a
4。 *=
“乘和赋”运算符:将右操作数的值乘以左操作数的值,然后将结果分配给左操作数。。
例子:c *= a大致与c = c * a
5, /=
“除法和赋值”运算符:将右操作数的值除以左操作数的值,并将结果分配给左操作数。
例子:c /*= a大致与c = c / a
6。 %=
“取模并赋值”运算符:通过左操作数的值计算右操作数的值的模数,并将结果分配给左操作数。
例子:c %*= a大致与c = c % a
7。 <<=
“左移并分配”运算符。
例子:c <<= 2大致与c = c << 2
8。 >>=
“算术右移并分配”运算符。
例子:c >>= 2大致与c = c >> 2
9。 >>>=
“逻辑右移并分配”运算符。
例子:c >>>= 2大致与c = c >>> 2
10。 &=
“按位与和分配”运算符。
例子:c &= 2大致与c = c & 2
11。 |=
“按位或和分配”运算符。
例子:c |= 2大致与c = c | 2
12 ^=
“按位异或或分配”运算符。
例子:c ^= 2大致与c = c ^ 2