+ =和= +之间的差异

时间:2011-08-05 15:01:16

标签: java

我错了+ = = = +一次多次,我想我一直忘记因为我不知道这两者之间的区别,只有那一个给了我期望它的价值,另一个没有。

为什么会这样?

8 个答案:

答案 0 :(得分:44)

a += ba = a + b的简写(虽然请注意表达式a只会被评估一次。)

a =+ ba = (+b),即将+的一元b分配给a

示例:

int a = 15;
int b = -5;

a += b; // a is now 10
a =+ b; // a is now -5

答案 1 :(得分:11)

+=是一个复合赋值运算符 - 它 RHS操作数添加到LHS操作数的现有值。

=+只是赋值运算符,后跟一元+运算符。 LHS操作数的值设置为RHS操作数的值:

int x = 10;

x += 10; // x = x + 10; i.e. x = 20

x =+ 5; // Equivalent to x = +5, so x = 5.

答案 2 :(得分:7)

+= - >将右侧添加到左侧

=+ - >不要使用它。将左侧设置为右侧。

答案 3 :(得分:3)

a += b等于a = a + ba =+ b等于a = (+b)

答案 4 :(得分:2)

这很简单.x + = 1是x = x + 1而x = + 1会使x的值为1(正)

答案 5 :(得分:2)

x += y 

相同
x = x + y

x =+ y

错误但可以解释为

x = 0 + y

答案 6 :(得分:1)

因为=+不是Java运算符。

答案 7 :(得分:0)

一些历史观点:Java从C继承了+=和类似的运算符。在C的早期版本(20世纪70年代中期),复合赋值运算符左边是“=”,所以

x =- 3;

相当于

x = x - 3;

x仅评估一次)。

这引起了混乱,因为

x=-1;

会递减x而不是为其赋值-1,因此语法被更改(避免了必须用空格包围运算符的恐惧:x = -1;)。

(我在示例中使用了-==-,因为早期的C没有一元+运算符。)

幸运的是,Java在C更改为当前语法之后很久才被发明,因此它从未遇到过这个特殊问题。