Java + =含义

时间:2012-06-29 17:50:19

标签: java operators

我在一段代码中看到了这个符号/运算符:

a+=1;

但我无法弄清楚它的作用。有人能帮帮我吗?

5 个答案:

答案 0 :(得分:10)

相当于

a = a + 1;

答案 1 :(得分:8)

来自Java Language Specification

  

E1 op= E2形式的复合赋值表达式等同于E1 = (T) ((E1) op (E2)),其中TE1的类型,但E1仅被评估一次。

如果左侧有副作用,最后一个短语很重要:

array[i++] += 1;

等同于:

array[i++] = array[i++] + 1;

第一个表达式将增加i一次。第二个将增加i两次,并将右手值分配给array的不同元素,而不是第一个表达式。

我应该注意到这些副作用声明并不是很好的编程形式,尽管你经常会发现它们被使用过。

演员阵容也很重要,因为(E1) op (E2)的类型可能与E1不兼容。例如,如果a的类型为short,则a++不等同于a = a + 1。后者将无法编译,因为a + 1的类型为int,并且无法在没有强制转换的情况下分配给short变量。这就是为什么这个案例中的规范说a++等同于a = (short) ((a) + (1))。如果a的类型为charbyte,则同样如此。

答案 2 :(得分:7)

x += y;

相当于

x = x + y;

其他数学运算也有类似的运算符: - =,* =,/ =。例如:

x *= y;

相当于

x = x * y;

(编辑:以上假设x中没有'副作用';即前增量或后增量算子。编辑以反映Ted Hopp的观点)

答案 3 :(得分:5)

以下是简写:

a = a + 1;

答案 4 :(得分:1)

这意味着a = a + 1,即增加a