ほっと・ゆたカフェ

仕事・趣味など日常で体験したことをゆる~く紹介していきます

MENU

【JAVA】条件分岐で使われるif文とswitch文の違いって何?

お久しぶりの更新となりました><

 

今回はタイトルにもある通り条件分岐のお話になります。

JAVAの条件分岐の代表的なものに「if文」「switch文」の2種類があります。

今回はそれぞれの簡単な紹介とともに、この2つの違いと使い分けについて記載していきたいと思います。

 

<本記事の狙い>

・条件分岐とは何か?

・if文、switch文の仕組みを紹介

・if文のほうがいいケース、switch文のほうがいいケースを例を挙げて解説

 

早速見ていきましょう!

 

 

1.条件分岐とは?

プログラム開発で「一定の条件に従って処理を分岐させる」ことです。

 

以前紹介したフロー図ですが、改めて紹介します。

下図の「クラスは?」の分岐部分が『条件分岐』となります。

f:id:ysneuneu:20210426233941j:plain

 

 

 上記のフロー図を紹介した、過去のブログのリンクを貼っておきますね!

もしよかったら、参考にしてみてください。

ysneuneu.hateblo.jp

 

 

2.if文(if、else if、else)

if文は1つの条件式をもとに処理を分けるものになります。

概略としては以下です。

 f:id:ysneuneu:20210427104321j:plain

 

言葉で解説すると、下記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("それ以外です"); 

 } 

 }

}

<実行結果>

f:id:ysneuneu:20210427164402j:plain

 

if文は条件分岐の中で最も基本的かつ手軽に使える条件分岐です!

 

また、例では1つの条件式に1項目しか設定していませんでしたが、下記の<例>のように1つの条件式で複数条件を設定することも可能です。

 

<例>

if (条件式① AND 条件式②)

条件式①、条件式②の両方が満たされたら処理される。

 

手軽な反面、1つのプログラムにif文、else if文が乱立して、わかりにくいプログラムが出来上がってしまうこともあるので、注意です。

 

3.switch文(switch、case、defalut)

switch文は、1つの項目を複数の条件で分岐処理できる仕組みになります。

概略としては以下です。

 f:id:ysneuneu:20210427104403j:plain

言葉で解説すると、下記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("日曜日です");

    }
  }
}

 

<実行結果>

f:id:ysneuneu:20210427160139j:plain

 

switch文は、1つの変数(評価式)に対して複数の条件分岐をしたいときに便利です。

 

ポイントとしては2点!!

・case評価は複数指定できる

⇒サンプルのプログラムでは「月」「火」「木」「金」のいずれをいれても、「6時間の曜日です」が表示されます

・defaultで条件に該当しない場合の処理を設定できる

⇒サンプルのプログラムでは「日」や存在しない曜日を入力すると必ず「日曜日です」が表示されます

 

4.今回のまとめ

今回はJAVAの条件分岐で代表的なif文、switch文を紹介しました。

それぞれメリット/デメリットがあるので、要件に応じて適切に使い分けをすれば、わかりやすいプログラムが作れます!!

 

〇if文

構文が簡易で慣れやすい。初心者にはオススメ。

複数の項目を同時に判定したいときに有効。

<例>

変数Aが「1」 かつ 変数Bが「2」の場合 など

 

〇switch文

ある評価項目(評価式)に対して、複数の判定をしたいときに有効。

<例>

変数A - 変数Bの結果が、

・0より小さいとき

・0のとき

・1のとき

・2以上のとき

など

 

 

それぞれの特性を理解して、なるべくわかりやすいプログラムを作ってみましょう!

 

今回は以上になります。ご覧いただきありがとうございました。