代入演算子
変数に値を代入する際は、代入演算子「=」を使います。今回はこの代入演算子について説明します。
代入演算子 目次
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
このように色々と組み合わせることはできますが、明らかに見にくくなり間違いが発生する原因にもなりますので、あまり過度の多重化はしないようにしましょう。









最近のコメント