a + = b和a = a + b之间的差异

El3*_*1c4 3 java operators

在Java中,我真的很想知道使用a += b;或是否有区别a = a + b;.我应该主要使用哪一个?我知道第一个是快捷方式,但编译器是否会以不同方式获得这两个指示?

Rob*_*bin 16

请参阅Java语言规范,15.26.2复合赋值运算符

引用相关部分:

形式E1 op = E2的复合赋值表达式等效于E1 =(T)((E1)op(E2)),其中T是E1的类型,除了E1仅被评估一次.

short x = 3;
x += 4.6;
Run Code Online (Sandbox Code Playgroud)

并且结果x的值为7,因为它相当于:

short x = 3;
x = (short)(x + 4.6);
Run Code Online (Sandbox Code Playgroud)

因此它不仅仅是语法糖

int x = 1;
long a = 2l;
x+= a;
Run Code Online (Sandbox Code Playgroud)

编译,在哪里

int x =1;
long a =2l;
x = x+a;
Run Code Online (Sandbox Code Playgroud)

给你一个编译错误,就像最近在StackOverflow上讨论的那样