Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

switch命令

式の値によって処理を分岐する – switch命令
switch(exp) {
case val1:
statements
case val2:
statements
default:
statements
}
exp:任意の式
val1、2…:expと比較する値

switch命令は、与えられた式(変数)の値によって、処理を分岐します。式の値は、char/byte/short/int/String/enum型のいずれかでなければなりません(ただし、String型を使えるのはJavaSE 7以降)。
たとえば以下は、変数valの値(1…3)に応じて対応するメッセージを表示します。それぞれの値に応じて実行する処理はcase句で、すべての値に合致しなかった場合に実行する処理はdefault句で表します。

StatSwitch.java

package com.example.mynavi.control;

public class StatSwitch {
  public static void main(String[] args) {
    int val = 3;
    switch (val) {
      case 1:
        System.out.println("変数valは1です");
        break;
      case 2:
        System.out.println("変数valは2です");
        break;
      case 3:
        System.out.println("変数valは3です");
        break;
      default:
        System.out.println("変数valは1、2、3いずれでもありません");
        break;
    } // 結果:変数valは3です
  }
}

なお、case、default句の末尾は、break命令で終わるのが原則です。さもないと、次の句が続けて実行されてしまいます。句の区切り目で、自動的にブロックを抜けるわけではない点に注意してください。

note

フォールスルー
ただし、あえて句の終わりに、break命令を指定しないこともあります。例えば以下のような場合です。

switch (val) {
  case 1:
  case 2:
    ...中略...
    break;
  case 3:
    ...中略...
    break;
}

これによって、変数valが1、または2の場合に実行する命令群を表現できます。このような書き方をフォールスルーと言います。

制御構文
if命令
switch命令
while命令
do…while命令
for命令
拡張for命令
break命令
continue命令

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職