-4

コードのブロックでこのシンボル/演算子を見ました:

a+=1;

しかし、私はそれが何をするのか理解できません。誰か助けてくれませんか?

4

5 に答える 5

10

と同等です

a = a + 1;
于 2012-06-29T17:51:10.797 に答える
8

Java言語仕様から:

の形式の複合代入式は、E1 op= E2E1 = (T) ((E1) op (E2))T型ですがE1E1は 1 回だけ評価されます。

左辺に副作用がある場合、最後のフレーズは重要です。

array[i++] += 1;

これは以下と同等ではありません:

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

最初の式は 1 回インクリメントしますi。2 番目の式は 2 回インクリメントiし、右側の値をarray最初の式とは異なる要素に割り当てます。

この種の副作用ステートメントは、頻繁に使用されているにもかかわらず、適切なプログラミング形式ではないことに注意してください。

(E1) op (E2)の型はと代入互換でない場合があるため、キャストも重要ですE1。たとえば、aが タイプのshort場合、a++は と同等ではありませんa = a + 1a + 1の型はisであり、キャストなしでintは変数に割り当てることができないため、後者はコンパイルされません。shortそのため、この場合の仕様では、それa++は と同等であると述べられていa = (short) ((a) + (1))ます。aタイプがcharorの場合も同様ですbyte

于 2012-06-29T17:57:03.670 に答える
7
x += y;

と同等です

x = x + y;

-=、*=、/= など、他の数学演算にも同様の演算子があります。例えば:

x *= y;

と同等です

x = x * y;

(編集:上記は、xに「副作用」がないことを前提としています。つまり、プレインクリメントまたはポストインクリメント演算子です。Ted Hoppのポイントを反映するように編集されています)

于 2012-06-29T17:51:01.763 に答える
5

これは、次の省略形です。

a = a + 1;
于 2012-06-29T17:50:55.110 に答える
1

つまり、a = a + 1インクリメントaです。

于 2012-06-29T17:51:10.297 に答える