Javaには代入演算子と呼ばれる演算子がある。これはここまでで必ず習っている「=」のことを指す。
代入演算子の演算子の組み合わせでできるのが、複合代入演算子だ。
このページではこれらの使い方について初心者の方向けにまとめた。参考にしていただければと思う。
目次
代入演算子
代入演算子とは?
代入演算子は、右の値を代入演算子の左の変数へ代入する。代入するとは、割り当てること、もう少し簡単にいうと値をコピーすることだ。
代入演算子「=」は、シンプルな代入演算子である。それ以外の11の代入演算子は、代入と他の演算子を組み合わせた複合代入演算子である。
普通の変数への代入のことを難しく説明しているだけなので、よくわからなければスルーで構わない。
代入演算子の種類
Javaの代入演算子は、ふたつの種類がある。次のセクションでこれらのひとつひとつの演算子の詳細を説明している。
- シンプルな代入演算子 =
- 複合代入演算子
では、その詳細を見てみよう。
シンプルな代入演算子 =
シンプルな代入演算子「=」の書き方の基本は簡単だ。
オペランド1 = オペランド2;
代入演算子「=」は、シンプルにオペランド2の値をオペランド1へ代入する。オペランド1は置き換えられるので変数でなければならない。
複合代入演算子
ここからが新規のお話だ。
複合代入演算子は、代入演算子と組み合わされた演算子により、演算結果がオペランド1に代入される。どのような組み合わせがあるかは、下記の表を見てほしい。オペランド1は演算結果によって、置き換えられるので変数でなければならない。
複合代入演算子には、11の種類がある。書き方の基本は簡単だ。
オペランド1 演算子= オペランド2;
例) x += 3;
下の一覧表は、11種類の複合代入演算子を演算子の種類ごとに示している。また、例の項目は、実際にどのように使われるのかを示している。また、説明の項目は、複合演算子を使わないで、同じ演算を基本的な演算子だけを使って記述している。
算術演算子と代入演算子の組み合わせ
演算子 |
例 |
説明 |
*= |
a *= b |
a = a * b |
/= |
a /= b |
a = a / b |
%= |
a %= b |
a = a % b |
+= |
a += b |
a = a + b |
-= |
a -= b |
a = a – b |
シフト演算子と代入演算子の組み合わせ
演算子 |
例 |
説明 |
<<= |
a <<= b |
a = a << b |
>>= |
a >>= b |
a = a >> b |
>>>= |
a >>>= b |
a = a >>> b |
ビット演算子と代入演算子の組み合わせ
演算子 |
例 |
説明 |
&= |
a &= b |
a = a & b |
^= |
a ^= b |
a = a ^ b |
|= |
a |= b |
a = a | b |
複合代入演算子のサンプルプログラム
このサンプルプログラムは、11種類の複合代入演算子のうち算術演算子と組み合わせたものを取り上げ、例と説明をそのままプログラムに書いたものだ。
実際のコードで、書き方と演算結果を確かめよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
public class AssignmentArithmeticOperators { public static void main (String[] args) { int a;//[1] int b;//[2] a = 10; b = 3;//[3] a *= b;//[4] System.out.println("[5] a *= b; a = " + a); a = 10; b = 3;//[6] a = a * b;//[7] System.out.println("[8] a = a * b; a = " + a); a = 10; b = 3;//[9] a /= b;//[10] System.out.println("[11] a /= b; a = " + a); a = 10; b = 3;//[12] a = a / b;//[13] System.out.println("[14] a = a / b; a = " + a); a = 10; b = 3;//[15] a %= b;//[16] System.out.println("[17] a %= b; a = " + a); a = 10; b = 3;//[18] a = a % b;//[19] System.out.println("[20] a = a % b; a = " + a); a = 10; b = 3;//[21] a += b;//[22] System.out.println("[23] a += b; a = " + a); a = 10; b = 3;//[24] a = a + b;//[25] System.out.println("[26] a = a + b; a = " + a); a = 10; b = 3;//[27] a -= b;//[28] System.out.println("[29] a -= b; a = " + a); a = 10; b = 3;//[30] a = a - b;//[31] System.out.println("[32] a = a - b; a = " + a); } } |
実行結果
1 2 3 4 5 6 7 8 9 10 |
[5] a *= b; a = 30 [8] a = a * b; a = 30 [11] a /= b; a = 3 [14] a = a / b; a = 3 [17] a %= b; a = 1 [20] a = a % b; a = 1 [23] a += b; a = 13 [26] a = a + b; a = 13 [29] a -= b; a = 7 [32] a = a - b; a = 7 |
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [3] aに10を代入し、bに3を代入する。
- [4] a *= bを実行する。
- [6] aに10を代入し、bに3を代入する。
- [7] a = a * bを実行する。
- [9] aに10を代入し、bに3を代入する。
- [10] a /= bを実行する。
- [12] aに10を代入し、bに3を代入する。
- [13] a = a / bを実行する。
- [15] aに10を代入し、bに3を代入する。
- [16] a %= bを実行する。
- [18] aに10を代入し、bに3を代入する。
- [19] a = a % bを実行する。
- [21] aに10を代入し、bに3を代入する。
- [22] a += bを実行する。
- [24] aに10を代入し、bに3を代入する。
- [25] a = a + bを実行する。
- [27] aに10を代入し、bに3を代入する。
- [28] a -= bを実行する。
- [30] aに10を代入し、bに3を代入する。
- [31] a = a - bを実行する。
シフト演算子と組み合わせのサンプルプログラム
このサンプルプログラムは、11種類の複合代入演算子のうちシフト演算子と組み合わせたものを取り上げ、例と説明をそのままプログラムに書いたものだ。
シフト演算子については下記で詳しい。
実際のコードで、書き方と演算結果を確かめよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public static void main (String[] args) { int a;//[1] int b;//[2] a = 10; b = 3;//[3] a <<= b;//[4] System.out.println("[5] a <<= b; a = " + a); a = 10; b = 3;//[6] a = a << b;//[7] System.out.println("[8] a = << b; a = " + a); a = 10; b = 3;//[9] a >>= b;//[10] System.out.println("[11] a >>= b; a = " + a); a = 10; b = 3;//[12] a = a >> b;//[13] System.out.println("[14] a = a >> b; a = " + a); a = 10; b = 3;//[15] a >>>= b;//[16] System.out.println("[17] a >>>= b; a = " + a); a = 10; b = 3;//[18] a = a >>> b;//[19] System.out.println("[20] a = a >>> b; a = " + a); } } |
実行結果
1 2 3 4 5 6 |
[5] a <<= b; a = 80 [8] a = << b; a = 80 [11] a >>= b; a = 1 [14] a = a >> b; a = 1 [17] a >>>= b; a = 1 [20] a = a >>> b; a = 1 |
サンプルプログラムの説明
- [3] aに10を代入し、bに3を代入する。
- [4] a <<= bを実行する。
- [6] aに10を代入し、bに3を代入する。
- [7] a = a << =bを実行する。
- [9] aに10を代入し、bに3を代入する。
- [10] a >>= bを実行する。
- [12] aに10を代入し、bに3を代入する。
- [13] a = a >>bを実行する。
- [15] aに10を代入し、bに3を代入する。
- [16] a >>>= bを実行する。
- [18] aに10を代入し、bに3を代入する。
- [19] a = a >>> bを実行する。
ビット演算子と組み合わせのサンプルプログラム
このサンプルプログラムは、11種類の複合代入演算子のうちビット演算子と組み合わせたものを取り上げ、例と説明をそのままプログラムに書いたものだ。実際のコードで、書き方と演算結果を確かめよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class AssignmentBitwiseOperators { public static void main (String[] args) { int a;//[1] int b;//[2] a = 10; b = 3;//[3] a *= b;//[4] System.out.println("[5] a &= b; a = " + a); a = 10; b = 3;//[6] a = a & b;//[7] System.out.println("[8] a = a & b; a = " + a); a = 10; b = 3;//[9] a ^= b;//[10] System.out.println("[11] a ^= b; a = " + a); a = 10; b = 3;//[12] a = a ^ b;//[13] System.out.println("[14] a = a ^ b; a = " + a); a = 10; b = 3;//[15] a |= b;//[16] System.out.println("[17] a |= b; a = " + a); a = 10; b = 3;//[18] a = a | b;//[19] System.out.println("[20] a = a | b; a = " + a); } } |
実行結果
1 2 3 4 5 6 |
[5] a &= b; a = 30 [8] a = a & b; a = 2 [11] a ^= b; a = 9 [14] a = a ^ b; a = 9 [17] a |= b; a = 11 [20] a = a | b; a = 11 |
サンプルプログラムの説明
- [3] aに10を代入し、bに3を代入する。
- [4] a &= b を実行する。
- [5] a を実行する。
- [6] aに10を代入し、bに3を代入する。
- [7] a = a & bを実行する。
- [9] aに10を代入し、bに3を代入する。
- [10] a ^= bを実行する。
- [12] aに10を代入し、bに3を代入する。
- [13] a = a ^ bを実行する。
- [15] aに10を代入し、bに3を代入する。
- [16] a |= bを実行する。
- [18] aに10を代入し、bに3を代入する。
- [19] a = a | bを表示する。
まとめ
このページでは、Javaの代入演算子についてまとめてきた。
基本的には便利な書き方だが、コードを見てからの理解に一瞬だが時間がかかるようになる部分もあるため、うまく使おう。
少なくとも読んですぐに理解できるようにしておこう。