【Java入門】代入演算子、複合代入演算子について
代入演算子
「=」が代入演算子となります。優先順位はすべての演算子の中で最下位です。そのため、常に右辺の式を先に計算します。
int a,b,c;
a = b = c = 5;
「=」で変数を連結すると、すべての変数を同じにすることができ、右結合のため、代入は右端から次のように実行されます。
c=5, b=c, a=b
ただし下記の書き方はコンパイルエラーとなります。
〇変数宣言時の初期化の際には使えません。
int c=b=a=5; ← 変数宣言時の初期化の際は使用不可
〇途中に式があると使えません。
int a=b*2=c=5; ← 途中に式があると使用不可
a=b++=c=5; ← 途中に式があると使用不可
複合代入演算子
「+=」や「-=」で変数の値をある数だけ増やしたり減らしたりすることができます。
a += X
a -= X
a *= X
a /= X
a %= X
intやdoubleなどすべての数値型変数に対して適用できます。
注意点
①変数の中に何かの値が入っていることが前提のため初期化は必須です。値が入ってない場合はコンパイルエラーとなります。
②本来キャストをしなければならないケースでもキャストしなくてもよい性質があります。(キャストフリー)
例えば下記は型の不一致でdouble から int には変換できないため、エラーとなります。
int n = 0;
n = n + 15.8;
System.out.println(n);
一方、下記のように複合代入演算子で表現した場合はエラーになりません。
int n = 0;
n += 15.8;
System.out.println(n);
本来なら「n+=(int)15.8;」のようにキャストする必要があるが、コンパイラが強制的な型変換を行うので実際にはコンパイルエラーとはなりません。ただし、意図的にこれを利用して使うことは通常はしません。