我在一段代码中看到了这个符号/运算符:
a+=1;
但我无法弄清楚它的作用。有人能帮助我吗?
它相当于
a = a + 1;
来自Java 语言规范:
形式的复合赋值表达式
E1 op= E2等价于E1 = (T) ((E1) op (E2)),其中T是 的类型E1,除了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是 typechar或,情况也是如此byte。
x += y;
相当于
x = x + y;
其他数学运算也有类似的运算符:-=、*=、/=。例如:
x *= y;
相当于
x = x * y;
(编辑:以上假设 x 中没有“副作用”;即,前置或后置运算符。编辑以反映 Ted Hopp 的观点)
它是以下内容的简写:
a = a + 1;
这意味着a = a + 1即增量a。