Java switch文 条件分岐を行う

Javaのswitch文で条件分岐を行うサンプルです。

目次 switch文とは
  switch文のサンプル
  nullをチェックするサンプル
  フォールスルー(breakがない場合)
  switch文の中でif文を使用する

switch文とは

switch(条件){
  case 値 :
    処理
    break;
   ・・・
  default:
    処理
    break;
}
  • 条件の値とcaseの値が一致すれば、配下の処理が実行されます。
  • breakでswitch文を抜けます。breakがないと下の判定(case/default)に行ってしまいます。
  • defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
  • JavaSE7以降であればswitch文で文字列の判定もできます。
    ただし、値がnullの場合、NullPointerException例外が発生するので判定をする際は、switch文の前に値がnullでないことを確認したほうがよいです。

switch文のサンプル

public class Test1 {
	public static void main(String[] args) {
		String a = "2";

		switch (a) {
		case "1":
			System.out.println("1つめ");
			break;
		case "2":
			System.out.println("2つめ"); // 2つめが出力される
			break;
		default:
			System.out.println("3つめ");
			break;
		}
	}
}

9行目のcase "2"は変数aの値と一致するのでその配下の処理が実行されます。
11行目のbreakでswitch文を抜けます。

nullをチェックするサンプル

switch文の前にnullをチェックするサンプルです。

  String a = null;

  if (a == null) {
    System.out.println("nullです"); // nullですが出力される

  } else {
    switch (a) {
      case "a":
        System.out.println("1つめ");
        break;
      case "b":
        System.out.println("2つめ");
        break;
      default:
        System.out.println("3つめ");
        break;
    }
  }

1行目は、変数にnullをセットしています。
3行目は、if文でnullかチェックしています。
値がnullでない場合は、6行目のelseからswitch文が実行されます。

フォールスルー(breakがない場合)

  String a = "1";

  switch (a){
    case "1":
      System.out.println("1つめ"); // 1つめが出力される
			
    case "2":
      System.out.println("2つめ"); // 2つめが出力される
      break;
    default:
      System.out.println("3つめ");
      break;
  }

6行目は、breakがありません。
5行目のcase "1"の処理の後、7行目のcase"2"の処理も実行されます。
フォールスルー(fall through/落ちる)と呼ばれます。
breakを書き忘れたのかわかりづらいので使用しないほうが良いです

switch文の中でif文を使用する

switch文の中でif文を使用できます。

  int a = 3;

  switch (a){
    case 3:
      if (a % 2 == 0) {
        System.out.println("偶数");
      } else {
        System.out.println("奇数"); // 奇数が出力される
      }
        break;
    default:
      System.out.println("その他");
      break;
  }

5行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。

関連の記事

Java if文 条件分岐を行うサンプル
Java while文とdo…while文 処理を繰り返す
Java 拡張for文 配列やコレクションをループで取得
Java for文 処理を繰り返す(break/continue)

△上に戻る