条件を分岐するJavaのswitch文の使い方【初心者向け!】

javaのswitch
  • このエントリーをはてなブックマークに追加
  • Pocket

if文の条件分岐以外にも、処理手順を分岐する方法がある。Javaではswitch文がこれだ。

switchはif文で書くと面倒だと思うような、簡単ながら量の多い比較をするのに適している。このページではswitch文の使い方をまとめているので、使い方をマスターしていただければと思う。

Javaのswitch文の使い方

Javaのswitch文は、いくつかのケースを想定して、それに基づいて実行することをswitchできる文法だ。

if文との違い

if-else文はふたつの内のひとつの文を選んで実行したが、switch文はいくつかの文の中から実行する文のひとつを選ぶことができる。

わかりにくいと思うので、ちょっと解説しておこう。

例えば、fruitsという変数に「apple」が入っていたら「りんご」を出力したい。「grape」が入っていたら「ぶどう」を出力したい。「orange」が入っていたら「みかん」を出力したいとしよう。

if文で書くと、if書いて、if-elseを書いて、、、と若干面倒だ。これが3つであればまだましだが、10個あったらどうだろうか? 書きたくなくなるだろう。

switch文で書くと、簡単になる。

こんな感じでcaseを増やしていけばいい。

正確な文法は次のようになる。

式の部分は、char型、byte型、short型、int型、Character型、Byte型、Short型、Integer型、String型、 enum型のいずれかになる。

サンプルプログラムを見ていただけるとなんとなくわかるだおう。

式に続いてswitch文の本体がある。ブロック{ }で囲まれた部分だ。このブロックは、caseと定数によってラベルが付けられている。どの「case」にも定数が必要だ。

ラベルとcase定数は、switch文で関連づけられていると言われている。式の値と等しい定数を持つcaseが、式の値に対応するラベルになる。

では、文の実行はどのように行われるのだろうか。それは、式がある値のとき、その値に対応するラベルが選ばれる。そして、それに続く文が実行され、switch文はbreakで終わる。

では、この点をサンプルプログラムで確認してみよう。

式がint型のサンプルプログラム

このサンプルプログラムは、式にint型の変数numberを使っている。この変数の値に対応するラベルに続く文、文字列の表示が行われる。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1]変数numberを宣言し、初期値の2を代入する。
  • [2][3][4] もしnumberが1ならば、「number = 1」を表示する。
  • [5] 中断して、switch文を終わる。
  • [2][6][7] もしnumberが2ならば、「number = 2」を表示する。
  • [8] 中断して、switch文を終わる。
  • [2][9][10] もしnumberが3ならば、「number = 3」を表示する。
  • [11] 中断して、switch文を終わる。
  • [2][12][13] もしnumberが4ならば、「number = 4」を表示する。
  • [14] 中断して、switch文を終わる。
  • [2][15][16] もしnumberが5ならば、「number = 5」を表示する。
  • [17] 中断して、switch文を終わる。

式がchar型のサンプルプログラム

このサンプルプログラムは、式にchar型の変数characterを使っている。この変数の値に対応するラベルに続く文、文字列の表示が行われる。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1]変数characterを宣言し、初期値の 'C'を代入する。
  • [2][3][4] もしcharacterが 'A'ならば、「character = A」を表示する。
  • [5] 中断して、switch文を終わる。
  • [2][6][7] もしがcharacterが'B'ならば、「character = B 」を表示する。
  • [8] 中断して、switch文を終わる。
  • [2][9][10] もしcharacterが'C'ならば、「character = C」を表示する。
  • [11] 中断して、switch文を終わる。
  • [2][12][13] もしcharacterが'D'ならば、「character = D」を表示する。
  • [14] 中断して、switch文を終わる。
  • [2][15][16] もしnumberが'E'ならば、「character = E」を表示する。
  • [17] 中断して、switch文を終わる。

式がString型のサンプルプログラム

このサンプルプログラムは、式にString型の変数Stringを使っている。この変数の値に対応するラベルに続く文、文字列の表示が行われる。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1]変数stringを宣言し、初期値の "月曜日"を代入する。
  • [2][3][4] もしstringが"月曜日" ならば、「string = 月曜日」を表示する。
  • [5] 中断して、switch文を終わる。
  • [2][6][7] もしstringが”火曜日”ならば、「string = 火曜日 」を表示する。
  • [8] 中断して、switch文を終わる。
  • [2][9][10] もしstringが”水曜日”ならば、「string = 水曜日 」を表示する。
  • [11] 中断して、switch文を終わる。
  • [2][12][13] もしstringが”木曜日”ならば、「string = 木曜日 」を表示する。
  • [14] 中断して、switch文を終わる。
  • [2][15][16] もしstringが”金曜日”ならば、「string = 金曜日 」を表示する。
  • [17] 中断して、switch文を終わる。
  • [2][18][19] もしstringが”土曜日”ならば、「string = 土曜日 」を表示する。
  • [20] 中断して、switch文を終わる。
  • [2][21][22] もしstringが”日曜日”ならば、「string = 日曜日 」を表示する。
  • [23] 中断して、switch文を終わる。

switch文で書くべきケース

switch文をどんな場面で使うかを考えてみよう。例えば、値のひとつひとつに対応した処理があると、if文で書くことを思いつくかもしれない。最初のサンプルプログラム「式がint型のサンプルプログラム」を、if文を使って書くと次のようになる。

コードの中にbreakがないので、if文を使ったほうがコンパクトに書ける気がして、このほうがいいと思ってしまうこともある。しかし、「3」と書くところを誤って「2」としてしまったらどうなるだろう。switch文はエラーになる。しかし、if文のほうはエラーにならない。

つまり、if文ではこうした誤りが発見されないのだ。それで、ひとつひとつの値に対応した処理をする場合は、switch文を使うことを勧めたい。

まとめ

switch文の使い方がなんとなくわかっただろうか?

switchは使いたい場面が必ず出てくる。そのときになって思い出してもいいが、できる限り使い方を覚えておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメントを残す

*