コードのブロックでこのシンボル/演算子を見ました:
a+=1;
しかし、私はそれが何をするのか理解できません。誰か助けてくれませんか?
と同等です
a = a + 1;
Java言語仕様から:
の形式の複合代入式は、
E1 op= E2はE1 = (T) ((E1) op (E2))のT型ですがE1、E1は 1 回だけ評価されます。
左辺に副作用がある場合、最後のフレーズは重要です。
array[i++] += 1;
これは以下と同等ではありません:
array[i++] = array[i++] + 1;
最初の式は 1 回インクリメントしますi。2 番目の式は 2 回インクリメントiし、右側の値をarray最初の式とは異なる要素に割り当てます。
この種の副作用ステートメントは、頻繁に使用されているにもかかわらず、適切なプログラミング形式ではないことに注意してください。
(E1) op (E2)の型はと代入互換でない場合があるため、キャストも重要ですE1。たとえば、aが タイプのshort場合、a++は と同等ではありませんa = a + 1。a + 1の型はisであり、キャストなしでintは変数に割り当てることができないため、後者はコンパイルされません。shortそのため、この場合の仕様では、それa++は と同等であると述べられていa = (short) ((a) + (1))ます。aタイプがcharorの場合も同様ですbyte。
x += y;
と同等です
x = x + y;
-=、*=、/= など、他の数学演算にも同様の演算子があります。例えば:
x *= y;
と同等です
x = x * y;
(編集:上記は、xに「副作用」がないことを前提としています。つまり、プレインクリメントまたはポストインクリメント演算子です。Ted Hoppのポイントを反映するように編集されています)
これは、次の省略形です。
a = a + 1;
つまり、a = a + 1インクリメントaです。