代入演算子
変数に値を代入する際は、代入演算子「=」を使います。今回はこの代入演算子について説明します。
代入演算子 目次
1.代入とは
そもそも代入とは、何らかの計算結果を変数に格納する際の処理のことを言います。変数に格納するとは、変数という一時領域に待避させるようなイメージです。変数に値を代入するには、代入演算子「=」を使用します。
変数 = 値や変数など
代入演算子は「=」記号ですので、上の図を見ると数学の考えでいくと等号(左辺と右辺が等しい)のように見えますが、等号ではありませんのでご注意ください。
等号は、イコールを2つ並べて(==)と書きます。
package pac01; public class HelloWorld { public static void main(String[] args) { String strHensu1; strHensu1 = "おはようございます"; System.out.println(strHensu1); } } ---------------------------------------------------------------- おはようございます
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
このように色々と組み合わせることはできますが、明らかに見にくくなり間違いが発生する原因にもなりますので、あまり過度の多重化はしないようにしましょう。
最近のコメント