Javaのswitch文とは?case・break・defaultの使い方を実例付きで解説
条件分岐は、あらゆるプログラミング言語に共通する重要な機能です。条件分岐を使うことで、プログラムの処理の流れを制御できます。Javaでは、if...else文を使って特定の条件に基づいてプログラムの流れを制御するのが一般的です。
さらにJavaには、switch文という便利な構文が用意されています。switch文は1つの式を複数のケース(case)と照らし合わせて評価し、一致するケースが見つかれば、そのケースに対応するコードブロックを実行します。
この記事では、Javaにおけるswitch文の使い方を中心に、default、case、breakという3つのキーワードの役割と具体的な使用例をわかりやすく解説していきます。
条件分岐のおさらい
条件分岐とは、ある条件が「真(true)」と評価された場合にのみ、特定のコードを実行させる仕組みです。たとえば、「変数nameに文字Fが含まれている場合だけコードブロックを実行する」といった処理がこれに該当します。
Javaでコードの流れを制御するための条件分岐には、主に次の2種類があります。
if...else文switch文
if...else文は、条件が真と評価されたときにコードブロックを実行します。以下はJavaのif文の簡単な例です。
if (15 > 5) {
System.out.println("15 is greater than 5.");
}
このコードは式15 > 5を評価し、結果が真であるため、次の出力が返されます。
15 is greater than 5.
また、すべての条件が偽(false)だった場合に実行されるelseブロックや、最初の条件が偽だった場合に新しい条件をテストするelse...ifブロックを組み合わせることもできます。
一方、switch文も同様に、コード内で条件分岐を行うために使える構文です。それでは、switch文の詳細を見ていきましょう。
Javaのswitch文の基本構文
Javaのswitch文は、1つの式を1つ以上の条件と照合して評価し、真となった条件に対応するコードブロックを実行するために使われます。
switch文の中にはcaseラベルが含まれ、このcaseを使って式と比較する条件を指定します。Javaのswitch文の基本構文は以下のとおりです。
switch(expression) {
case a:
break;
case b:
break;
case c:
break;
default:
break;
}
それぞれの要素の動作を順番に解説します。
まず、switch文に渡された式が一度だけ評価されます。その後、式の値がswitch文の先頭から順に各caseの値と比較されていきます。式があるcaseと一致すれば、そのcaseに関連付けられたコードブロックが実行されます。一致しなかった場合は、次のcaseラベルとの比較が続けられます。
そして、どの条件も真にならなかった場合は、defaultブロックの中身が実行される仕組みです。
switch文の実行例
ここからは、実際に動くサンプルコードを使ってswitch文の動きを確認しましょう。今回は「月の数値から月の名前を表示するプログラム」を作成します。対象は年の前半6か月(1月〜6月)のみとします。
このプログラムでは、JavaのLocalDateクラスを使って現在の月に対応する数値を取得します。1は1月、2は2月といった具合に、月が数値として表されます。
まず準備として、現在の月の数値を取得するコードを記述します。以下のコードでそのデータを取得できます。
LocalDate today = LocalDate.now(); int month = today.getMonthValue(); System.out.println(month);
このコードを実行すると、現在の月を表す数値が出力されます。この記事が2月に執筆されたため、ここでは「2」が返されています。
続いて、switch文を使って、上のコードで取得した数値に応じた月の名前をコンソールに出力してみましょう。プログラムは上から下へと実行され、一致するcaseを探します。一致が見つかると、break文によってswitch文が終了し、プログラムの残りの処理へと進みます。
カレンダープログラムのコードは以下のようになります。
LocalDate today = LocalDate.now();
int month = today.getMonthValue();
switch (month) {
case 1:
System.out.println("January");
break;
case 2:
System.out.println("February");
break;
case 3:
System.out.println("March");
break;
case 4:
System.out.println("April");
break;
case 5:
System.out.println("May");
break;
case 6:
System.out.println("June");
break;
}
このコードを実行すると、次の出力が返されます。
February
コードの流れを整理してみましょう。最初にLocalDateメソッドで現在の月を表す数値を取得します。次に、6つのcaseを持つswitch文を定義しています。
プログラムは各caseを上から順に評価していき、真となるcaseを探します。今回の例では2月なので数値は2であり、case 2が真と評価されます。すると、月の名前がコンソールに出力され、続いてbreak文が実行されてswitch文の処理が終了します。
仮に5月だった場合は月の値が5になるため、コンソールにはMayと出力されるわけです。
breakキーワードの役割
上記のコードではbreakキーワードを使用しました。Javaがbreak文を実行すると、switchブロック内のコードの実行が停止し、プログラムはその後の処理へと移行します。
このbreak文は非常に重要です。すでに一致するcaseが見つかった後に、それ以降のcaseを無駄に評価し続けることを防ぐ役割があるからです。正しいcaseが見つかった後は残りのケースを評価する必要がないため、実行時間の節約にもつながります。原則として、すべてのcaseの末尾にはbreak文を記述するようにしましょう。
先ほどのコードからbreak文の部分を抜き出したのがこちらです。
...
case 4:
System.out.println("April");
break;
...
もし4月であれば、このcaseが実行された後、break文が存在するため、プログラムはswitch文から抜け出します。
defaultキーワードの役割
defaultキーワードは、どのcaseとも一致しなかった場合に実行されるコードを指定するために使います。先ほどの例では、1月〜6月の間に該当する場合のみ月の名前を返すプログラムでした。
しかし、どのcaseも真にならなかった場合に、「It's after June!(6月以降です)」といったデフォルトのメッセージをユーザーに表示したい場合はどうすればよいのでしょうか。そこで活躍するのがdefaultキーワードです。
以下は、先ほどの例にdefaultキーワードを追加し、どのcaseにも一致しなかった場合に表示されるメッセージを指定した例です。
case 4:
System.out.println("April");
break;
case 5:
System.out.println("May");
break;
case 6:
System.out.println("June");
break;
default:
System.out.println("It's after June!");
break;
...
仮に7月にこのプログラムを実行した場合、どのcaseも真にならないため、defaultブロックの中身が実行されます。その結果、コンソールにはIt's after June!というメッセージが出力されます。
まとめ
Javaのswitch文は、1つの式を複数のcaseと照合して評価し、一致するcaseがあれば対応するコードを実行するための構文です。switch文は、プログラムの流れを制御するための条件分岐の一種といえます。
この記事では、Javaにおけるswitch文の使い方を解説し、case、break、defaultの各キーワードをswitch文と組み合わせて使う方法を紹介しました。さらに、これらのキーワードを実際に使用したサンプルコードも一緒に確認しました。
これであなたも、Javaのswitch文をプロのように使いこなせるはずです。ぜひ自分のプロジェクトでも試してみてください。
-
サムスンSmart Switchの使い方|データのバックアップと復元を徹底解説
サムスンの「Smart Switch」アプリを使えば、スマートフォンのデータをパソコンにバックアップし、後からGalaxyスマホやタブレットに復元することができます。この記事では、大切な写真や音楽などのデータを安全に保存するためのSmart Switchの使い方を、初心者にもわかりやすく解説します。※本記事の内容は、Android 6.0(Marshmallow)以降を搭載したサムスン製デバイスが対象です。Smart Switchのダウンロードとインストール方法「Smart Switch Mobile」アプリは、Galaxyスマートフォンには最初からインストールされていますが、Galaxy T
-
JavaのMath.random()メソッド徹底解説!乱数生成の基本から範囲指定まで
JavaのMath.random()メソッドは、0.0以上1.0未満の擬似乱数(疑似ランダムな数値)を生成するためのメソッドです。生成された乱数に別の数値を掛けることで、0〜1以外の任意の範囲の乱数を取得することもできます。結果が0になることはあっても、1以上になることはありません。 プログラミングで乱数が必要になる場面 プログラミングをしていると、ランダムな数値を生成したい場面によく出会います。例えば、クルーズ船会社を運営しているとしましょう。顧客の注文番号として使う予約参照番号をランダムに生成したり、数当てゲーム用のランダムな数字を作りたいといったケースが考えられます。 Javaには、乱