Java入門

【Java入門】条件分岐(switch文)

はじめに

前回の記事では、ループを中断するbreak文、ループ処理の途中で、残りの処理をスキップして次のループ処理に移るcontinue文について紹介しました。

今回の記事では、switch文を使った条件分岐について紹介します。

switch文を使った条件分岐

switch文とは、if文と同じように条件分岐を行う制御文です。if文との違いは、if文はelse-if文を使うことで複数の条件式を書くことができますが、switch文では条件式は1つです。

1つの式に対して、式の値が case のどれにあてはまるか確認します。あてはまる case があれば、その処理を実行し、caseのどれにもあてはまらないときは、defaultがある場合、defaultの処理を実行します。(※defaultは書かなくてもよい)

分岐処理が多くなると if文では読みにくくなるため、switch文を使うことで処理を簡潔にすることができます。

switch文の書き方は次のとおりです。

switch文の書き方

switch ( 式 )

{

case 値1

// 「式 = 値1」のときに実行される処理

break;

case 値2:

// 「式 = 値2」のときに実行される処理

break;

default:

// 式の値が上記のどれにも一致しないときに実行される処理

break;

}

スポンサーリンク

switch文の使用例

それでは、実際にプログラムでswitch文を使用した条件分岐の例を紹介します。

次の例では、変数「value」の値によってswitch文で処理を分岐しています。

[switch文の例]

public class SwitchSample {

    public static void main(String[] args) {
        String value = "01";
        
        switch (value) {
            case "01":
                System.out.println("01の処理");
                break;
                
            case "02":
                System.out.println("02の処理");
                break;
                
            default:
                System.out.println("デフォルトの処理");
                break;
        }
    }
}

[実行結果]

01の処理

上記のソースコードの処理の流れは次のとおりです。

処理の流れ

  • switch文開始
  • 式(value)の値が case のどれにあてはまるか確認する
  • case "01"と一致するので、case "01"の処理を行う
  • breakがあるので、switch文終了

switch文の注意点

switch文を書くときに気をつけることは break文を忘れずに記述することです。break文を書き忘れると、一致したcase以降の処理をすべて実行してしまいます。

なんでbreakを省略する書き方があるんですか?
case文にbreakを記述することは強制ではなく、case文の処理を続けて実行したいときには、breakを省略することができます。このように意図的にbreakを省略する記法を フォールスルー(fall through)といいます。

例えば、次のようなbreak文のないswitch文があるとします。

変数「value」の値はcase "02"に一致しているので、case "02"の処理を実行します。しかし、case "02"の処理にはbreak文がないので switch文は終了せず、そのまま case "02"の下に記述されている defaultの処理を実行します。

[break文を書いてない場合の例]

public class SwitchNoBreakSample {

    public static void main(String[] args) {
        String value = "02";
        
        switch (value) {
            case "01":
                System.out.println("01の処理");
                
            case "02":
                System.out.println("02の処理");
                
            default:
                System.out.println("デフォルトの処理");
        }

    }
}

[実行結果]

02の処理
デフォルトの処理

上記のソースコードの処理の流れは次のとおりです。

処理の流れ

  • switch文開始
  • 式(value)の値が case のどれにあてはまるか確認する
  • case "02"と一致するので、case "02"の処理を行う
  • break文がないので、処理を継続しcase "02"の下にあるdefaultの処理を行う
  • defaultの下には処理がないので、switch文終了

終わりに

本記事では、switch文を使った条件分岐について紹介しました。

次回の記事では、Javaのクラスについて紹介します。

helpful