3.7.4 扩展后的赋值运算符

3.7.4 扩展后的赋值运算符

赋值运算符可与算术运算符、位移运算符结合,扩展成功能更加强大的运算符。扩展后的赋值运算符如下

扩展的赋值运算符 描述
+= 对于x+=y,即对应于x=x+y
-= 对于x-=y,即对应于x=x-y
*= 对于x*=y,即对应于x=x*y
/= 对于x/=y,即对应于x=x/y
%= 对于x%=y,即对应于x=x%y
&= 对于x&=y,即对应于x=x&y
` =`
^= 对于x^=y,即对应于x=x^y
<<= 对于x<<=y,即对应于x=x<<y
>>= 对于x>>=y,即对应于x=x>>y
>>>= 对于x>>>=y,即对应于x=x>>>y

只要能使用这种扩展后的赋值运算符,通常都推荐使用它们。因为这种运算符不仅具有更好的性能,而且程序会更加健壮。

程序示例 +=运算符的用法

下面程序示范了+=运算符的用法。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class EnhanceAssignTest {
public static void main(String[] args) {
// 定义一个byte类型的变量
byte a = 5;
// 下面语句出错,因为5默认是int类型,a + 5就是int类型。
// 把int类型赋给byte类型的变量,所以出错
// a = a + 5;
// 定义一个byte类型的变量
byte b = 5;
// 下面语句不会出现错误
b += 5;
}
}

+=不会自动类型提升

运行上面程序,不难发现a=a+5a+=5虽然运行结果相同,但底层的运行机制还是存在一定差异的。因此,如果可以使用这种扩展后的运算符,则推荐使用它们