代入演算子

変数に値を代入する際は、代入演算子「=」を使います。今回はこの代入演算子について説明します。

代入演算子 目次

  1. 代入とは
  2. 再代入
  3. 複合代入演算子
  4. 多重の代入式

1.代入とは

そもそも代入とは、何らかの計算結果を変数に格納する際の処理のことを言います。変数に格納するとは、変数という一時領域に待避させるようなイメージです。変数に値を代入するには、代入演算子「=」を使用します。

変数 = 値や変数など

代入演算子

代入演算子は等号ではない

代入演算子は「=」記号ですので、上の図を見ると数学の考えでいくと等号(左辺と右辺が等しい)のように見えますが、等号ではありませんのでご注意ください。

等号は、イコールを2つ並べて(==)と書きます。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		String strHensu1;

		strHensu1 = "おはようございます";
		
		System.out.println(strHensu1);
	}
}
----------------------------------------------------------------
おはようございます

代入演算子2

2.再代入

代入先の左辺の変数が、右辺にも含まれていることを「再代入」と言います。ある変数の値を、現在の値から増減させたりするような際に使います。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		String strHensu1;

		strHensu1 = "おはようございます";
		strHensu1 = strHensu1 + "こんにちは";
		
		System.out.println(strHensu1);
	}
}
----------------------------------------------------------------
おはようございますこんにちは

再代入

strHensu1にはもともと”おはようございます”が格納されており、そのstrHensu1と”こんにちは”を結合して、「おはようございますこんにちは」という1つの文字列にしています。

再代入の仕組み

3.複合代入演算子

再代入の書き方を、もっと省略することができます。それが複合代入演算子です。書き方シンプルになるのでこちらの方がおすすめです。再代入と複合代入演算子の組み合わせは以下のとおりです。

<再代入と複合代入演算子の組み合わせ>
再代入 複合代入演算子
x = x + y x += y
x = x – y x -= y
x = x * y x *= y
x = x / y x /= y
x = x % y x %= y
package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1 = 0;
		int intHensu2 = 0;

		intHensu1 = intHensu1 + 1;
		intHensu2 += 1;
		System.out.println(intHensu1);
		System.out.println(intHensu2);		
	}
}
------------------------------------------------------------------
1
1

再代入と複合代入演算子

ここで注意しないといけないのが、再代入や複合代入演算子を使う場合、変数は予め初期化しておかなければなりません。変数を宣言しただけでは、中に格納されている値が保証されませんので、その状態で計算に使用しようとした場合、予期せぬ結果になりかねないからです。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1;
		int intHensu2;

		intHensu1 = intHensu1 + 1;
		intHensu2 += 1;
		System.out.println(intHensu1);
		System.out.println(intHensu2);		
	}
}
------------------------------------------------------------------
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	ローカル変数 intHensu1 が初期化されていない可能性があります
	ローカル変数 intHensu2 が初期化されていない可能性があります

	at pac01.HelloWorld.main(HelloWorld.java:8)

再代入には初期化が必要

おすすめとしては、とりあえず変数の宣言と同時に初期化はしておいて、別の値にしたい時は、もう一度値の代入をしておくことです。

4.多重の代入式

代入式を2つ以上同時書くこともできます。複合代入演算子も代入演算子なので多重に書くことができます。何れの場合も、一番右から順番に代入が実行されます。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1 = 0;
		int intHensu2 = 0;

		intHensu1 = intHensu2 = 20;
		System.out.println(intHensu1);
		System.out.println(intHensu2);		
	}
}
------------------------------------------------------------------
20
20

多重の代入

8行目ですが、最初にintHensu2に20を代入しています。この時点でintHensu2の値は20に変わっており、その後intHensu1にintHensu2を代入しているので、intHensu1の値も20になっています。

複合代入演算子でも同様のことができますし、さらに組み合わせることも可能です。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1 = 10;
		int intHensu2 = 20;

		intHensu1 += intHensu2 += 2;
		System.out.println("intHensu1 : " + intHensu1);
		System.out.println("intHensu2 : " + intHensu2);
		
		intHensu1 = 10;
		intHensu2 = 20;
		
		intHensu1 = intHensu2 *= 2;
		System.out.println("intHensu1 : " + intHensu1);
		System.out.println("intHensu2 : " + intHensu2);
	}
}
------------------------------------------------------------------
intHensu1 : 32
intHensu2 : 22
intHensu1 : 40
intHensu2 : 40

多重の代入2

このように色々と組み合わせることはできますが、明らかに見にくくなり間違いが発生する原因にもなりますので、あまり過度の多重化はしないようにしましょう。

コメントを残す

サブコンテンツ

このページの先頭へ