【JAVA】条件分岐で使われるif文とswitch文の違いって何?
お久しぶりの更新となりました><
今回はタイトルにもある通り条件分岐のお話になります。
JAVAの条件分岐の代表的なものに「if文」「switch文」の2種類があります。
今回はそれぞれの簡単な紹介とともに、この2つの違いと使い分けについて記載していきたいと思います。
<本記事の狙い>
・条件分岐とは何か?
・if文、switch文の仕組みを紹介
・if文のほうがいいケース、switch文のほうがいいケースを例を挙げて解説
早速見ていきましょう!
1.条件分岐とは?
プログラム開発で「一定の条件に従って処理を分岐させる」ことです。
以前紹介したフロー図ですが、改めて紹介します。
下図の「クラスは?」の分岐部分が『条件分岐』となります。
上記のフロー図を紹介した、過去のブログのリンクを貼っておきますね!
もしよかったら、参考にしてみてください。
2.if文(if、else if、else)
if文は1つの条件式をもとに処理を分けるものになります。
概略としては以下です。
言葉で解説すると、下記3つの条件判断/処理に分岐します。
※条件①②両方に該当する場合は、先に判定される条件①のみ有効になります。
・条件式①に該当する場合 ⇒ ①の処理を実施
・条件式②に該当する場合 ⇒ ②の処理を実施
・条件式①②にも不成立 ⇒ 不成立の場合を処理。
実際のサンプルコードと実行結果は以下になります。
<サンプルコード>
class If_Statement{
public static void main(String args){
// プログラムの目的System.out.println("if文の例です");
// 条件を判定するのに必要な情報を設定
String hantei_A = "A";
String hantei_B = "B";
String hantei_C = "C";
// 入力引数のアルファベットを取得
String data = args[0];
// 条件分岐
if(hantei_A.equals(data)) {
System.out.println("Aです");
}else if (hantei_B.equals(data)) {
System.out.println("Bです");
}else if (hantei_C.equals(data)) {
System.out.println("Cです");
} else {
System.out.println("それ以外です");
}
}
}
<実行結果>
if文は条件分岐の中で最も基本的かつ手軽に使える条件分岐です!
また、例では1つの条件式に1項目しか設定していませんでしたが、下記の<例>のように1つの条件式で複数条件を設定することも可能です。
<例>
if (条件式① AND 条件式②)
⇒条件式①、条件式②の両方が満たされたら処理される。
手軽な反面、1つのプログラムにif文、else if文が乱立して、わかりにくいプログラムが出来上がってしまうこともあるので、注意です。
3.switch文(switch、case、defalut)
switch文は、1つの項目を複数の条件で分岐処理できる仕組みになります。
概略としては以下です。
言葉で解説すると、下記3つの条件判断・処理に分岐します。
・変数の値が「1」のとき ⇒ ①の処理を実施
・変数の値が「2」または「3」のとき ⇒ ②の処理を実施
・上記2つの条件以外(default) ⇒ ③の処理を実施。
※switch文で評価するものについて、今回は「変数」で記載しましたが、式(計算式)なども設定可能です。
※「break」を記載しないと、その次のcase評価やdefault評価も動いてしまいますので注意が必要です。
上の図で「break」なしの状態だと、変数に「1」を設定した場合、処理①の後に処理③が流れることになります。
実際のサンプルコードと実行結果は以下になります。
<サンプルコード>
class Switch_Statement{
public static void main(String args){// プログラムの目的
System.out.println("Switch文の例です");// 条件を判定するのに必要な情報を設定
final String hantei_MON = "月";
final String hantei_TUE = "火";
final String hantei_WED = "水";
final String hantei_THU = "木";
final String hantei_FRI = "金";
final String hantei_SAT = "土";
final String hantei_SUN = "日";
// 入力引数のアルファベットを取得
String data = args[0];
// 条件分岐(Switch)
switch (data) {
case hantei_MON:
case hantei_TUE:
case hantei_THU:
case hantei_FRI:
System.out.println("6時間の曜日です");
break;
case hantei_WED:
System.out.println("5時間の曜日です");
break;
case hantei_SAT:
System.out.println("4時間の曜日です");
break;
default:
System.out.println("日曜日です");
}
}
}
<実行結果>
switch文は、1つの変数(評価式)に対して複数の条件分岐をしたいときに便利です。
ポイントとしては2点!!
・case評価は複数指定できる
⇒サンプルのプログラムでは「月」「火」「木」「金」のいずれをいれても、「6時間の曜日です」が表示されます
・defaultで条件に該当しない場合の処理を設定できる
⇒サンプルのプログラムでは「日」や存在しない曜日を入力すると必ず「日曜日です」が表示されます
4.今回のまとめ
今回はJAVAの条件分岐で代表的なif文、switch文を紹介しました。
それぞれメリット/デメリットがあるので、要件に応じて適切に使い分けをすれば、わかりやすいプログラムが作れます!!
〇if文
構文が簡易で慣れやすい。初心者にはオススメ。
複数の項目を同時に判定したいときに有効。
<例>
変数Aが「1」 かつ 変数Bが「2」の場合 など
〇switch文
ある評価項目(評価式)に対して、複数の判定をしたいときに有効。
<例>
変数A - 変数Bの結果が、
・0より小さいとき
・0のとき
・1のとき
・2以上のとき
など
それぞれの特性を理解して、なるべくわかりやすいプログラムを作ってみましょう!
今回は以上になります。ご覧いただきありがとうございました。