Javaのswitch caseを使いこなす!Java12以降の新しい記述も解説。

Javaのswitch caseを使いこなす!Java12以降の新しい記述も解説。

この記事では、Javaのswitch構文の使い方をサンプルのコードともに説明していく。

switch caseは使い勝手が良く初心者でも簡単に使いこなせるので、実践で使える場面があったら積極的に使っていこう!

なお、この記事ではJava 12から使えるようになった、新しいSwitch文の書き方も説明するのでJava中級者の人も最後まで読んでほしい。

switch文とは

switch文は並列関係にある複数の条件分岐をまとめて記述するための構文で「switch case」とも呼ばれる。複雑な条件分岐をシンプルに読みやすく記述することができる。

Javaのみならず多くのプログラミング言語に実装されている定番の構文だ。

switch文の使い方

では、switch文の使い方を具体的に見ていこう!

switch文の記述方法

switchの後に丸カッコの中に条件を記述する。caseでは実際の分岐条件を羅列して記述する。

以下はswitch caseを使ったコードの例だ。

class SwitchExample {

    public static void main(String[] args) {

        // 配送状況によりテキストを出力する例
        ShippingStatus status = ShippingStatus.IN_DELIVERY;
        switch (status) {
            case ORDER_CONFIRMED:
                System.out.println("注文を受け付けました。"); break;
            case SENT:
                System.out.println("商品を配送いたしました。"); break;
            case IN_DELIVERY:
                System.out.println("商品は配送中です。"); break;
            case DELIVERED:
                System.out.println("商品は配送済みです。"); break;
        }

        // サイズナンバーからサイズの表記を呼び出す例
        int sizeNumber = 5;
        String size;
        switch (sizeNumber) {
            case 1: case 2: case3:
                size = "スモールサイズ"; break;
            case 4: case 5: case 6:
                size = "ミドルサイズ"; break;
            case 7: case 8:
                size = "ビッグサイズ"; break;
            default:
                size = "無効なサイズ"; 
        };
        System.out.println("このサイズは" + size + "です。");
    }

    enum ShippingStatus {
        ORDER_CONFIRMED,
        SENT,
        IN_DELIVERY,
        DELIVERED
    }
}

指示の終わりにbreak;を記述する

caseごとの指示の終わりにはbreak;を書く。breakがない場合は次のcaseの指示が続けて呼ばれる。

これはよくあるミスで誰もが一度は経験するだろう。想定外の指示が実行される場合はbreakが抜け落ちていないか確認するようにしょう!

defaultは書くように心がける

defaultはcaseで定義されていない値が出現したときに呼ばれる。一般的にdefaultは付けることが推奨されている。プログラムを拡張するうちに、予期せぬ値が送られてくることは十分に考えられる。予想外の値が来た時はdefaultを使ってエラーログを出すなどの対処をするようにしよう。

Java 12以降の新しいswitch文の書き方

Java 12以降では、シンプルでモダンな新しいswitch caseの記述を使うことができる。

新しい記述は以前のswitch caseよりもスッキリとしており可読性も高い。Java 12以降を使用しているのであれば、ぜひこちらの記述を使おう。

前の章で紹介したswitch文を新しいswitch caseに書き換えると以下のようになる。

switch (status) {
    case ORDER_CONFIRMED -> System.out.println("注文を受け付けました。");
    case SENT -> System.out.println("商品を配送いたしました。");
    case IN_DELIVERY -> System.out.println("商品は配送中です。");
    case DELIVERED -> System.out.println("商品は配送済みです。");
}
String size = switch (sizeNumber) {
    case 1, 2, 3 -> "スモールサイズ";
    case 4, 5, 6 -> "ミドルサイズ";
    case 7, 8 -> "ビッグサイズ";
    default -> "無効なサイズ";
};

Intellijなどの高機能なIDEでは自動で変換する機能も付いている。