Javaの条件分岐:switch文

Java で条件分岐を実現する方法として if 文がありますが、switch 文を使うことでも条件分岐を行うことができます。ここでは、switch 文の使い方と、使う上での注意点について説明します。

switch 文の使い方

switch 文は以下のように記述します。

switch (変数) {
case 値1:
  変数が値1と等しいときに実行される処理
case 値2:
  変数が値2と等しいときに実行される処理
case 値3:
  変数が値3と等しいときに実行される処理
case 値4:
  変数が値4と等しいときに実行される処理
default:
  変数がどの値とも等しくないときに実行される処理
}

switch 文の後の () に評価する変数を記述します。この変数が case とコロン : の値に記述した値と順々に評価されていきます。もし変数が指定した値と等しい場合は、その後に記述したコードが実行されます。

case 文はいくつでも記述することが可能です。また、最後の defalut 文のコードは、変数が case 文で指定したすべての値と等しくないときに実行されます。

以下は switch 文を使ったプログラム例です。

class Sample {
  public static void main(String args[]) {
    int n = 3;
    switch (n) {
    case 1:
      System.out.println("one");
      break;
    case 2:
      System.out.println("two");
      break;
    case 3:
      System.out.println("three"); // three
      break;
    default:
      System.out.println(n);
    }
  }
}

上のプログラムでは、まず n = 3 で初期化しています。そして最初に n と 1 が比較され等しくないので、次に n と 2 が比較されます。これも等しくないので、n と 3 が比較されます。 n は 3 と等しいので、 case 3: の後のコードが実行され「three」と表示されます。

ここで注意してもらいたいのが、すべての case 文の後に break 文が挿入されていることです。Java の switch 文では、変数が case 文の値と順々に評価されていきますが、もし break 文がない場合は必ずすべての case 文と default 文が評価されてしまいます。

以下は break 文を省略したときの例です。

class Sample2 {
  public static void main(String args[]) {
    int n = 3;
    switch (n) {
    case 1:
      System.out.println("one");
    case 2:
      System.out.println("two");
    case 3:
      System.out.println("three"); // three
     default:
      System.out.println(n); // 3
    }
  }
}

この場合は、「three」と表示され後も switch 文から抜け出さずに default 文まで実行されてしまいます。もし switch 文を使用した場合に意図しない結果になったときは、break 文を記述し忘れていないか確認してみると良いでしょう。

switch 文を if 文で記述した場合

switch 文は条件分岐であるので、if 文でも記述できます。

以下は最初のプログラムを if 文で記述した例です。

class Sample3 {
  public static void main(String args[]) {
    int n = 3;
    if (n == 1) {
      System.out.println("one");
    } else if (n == 2) {
      System.out.println("two");
    } else if (n == 3) {
      System.out.println("three"); // three
    } else {
      System.out.println(n);
    }
  }
}

このプログラムをコンパイルして実行すると、「three」が表示されます。同じ動作をするコードですが、switch 文で記述した方が条件式をより簡潔に記述することができます。条件式が複雑な場合は if 文を使うなどして、switch 文とうまく使い分けることによって、より良いコードを作成することができます。


イベント