Javaでswitch文を使う方法【初心者向け】

初心者向けにJavaでswitch文の使い方について解説しています。分岐処理を行う際に使う命令文で、if文との違いについても説明しています。プログラミングにおいて基本的な文法なので、これからJava習得を目指している方はご覧ください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Javaでswitch文を使う方法について解説しています。

分岐処理を行う際に使いますが、if文との違いについても触れているので、それぞれ理解しておくと良いでしょう。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説している記事をまずご覧ください。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

田島悠介

今回はswitch文に挑戦してみよう。

大石ゆかり

田島メンター!switch文は何に使うんですか~?

田島悠介

これは条件分岐のひとつなんだ。基本の書き方から見てみよう。

大石ゆかり

分かりました!

switch文について

switch文とは、分岐処理を行うときに使用する命令文です。

分岐処理としては、if文という分岐処理も存在します。

if文はtrueまたはfalseの2方向への分岐です。

trueまたはfalseというのは、例えば、「もし(if)、変数numが1000より大きければ、処理を終了する」というif文の条件式の場合、変数numが1001の時はtrue、1000の時はfalseと表します。

 

このtrueかfalseの2方向への分岐をif文で制御するのに対し、switch文は多方向への分岐を制御します。

例えば、値(if文の説明でいうと、変数num)が1の時、10の時、100の時、1000の時という複数種類の条件に対し、多方向分岐を1回のswitch文で行うことができます。

同様の処理をif文で行う場合、最低でも4回のif文を使用する必要があります。

変数とは、値を入れる箱の事です。予約語で指定されている名前以外で、先頭に数字を使用しなければ、自由に設定できます。

なお、if文もswitch文も、名称自体はJava言語の予約語として用意されている為、変数名やメソッド名・クラス名に使用することができません。
予約語とは、Java言語の中であらかじめ特定用途に使用することが予約されている単語です。

 

switch文の書き方

switch (式) {
  case 値1:
    処理1
    break;
  case 値2:
    処理2
    break;
  case 値3:
    処理3
    break;
  case 値4:
    処理4
    break;
  default:
    処理n
    break;
}

 

[PR] Javaで挫折しない学習方法を動画で公開中

switch文を使用する際の注意点

switch文は整数型、列挙型、文字列型の式を判断し、式と一致した場合のcaseラベルに分岐します。

caseラベルとは、

case 値1:

と記載している部分のことです。

書き方は、caseのあとに、定数か定数を返す式を記述したのち、「:(コロン)」を書きます。

同じ値のcaseラベルは2回以上記載できません。先ほどの例でいえば、caseが10の場合、次のようにcase10を2回以上記述することはできません。

switch (式) {
  case 1:
    処理1
    break;
  case 10:
    処理2-1
    break;
  case 10:
    処理2-2
    break;
  case 100:
    処理3
    break;
  default:
    処理n
    break;
}

処理の部分には、単一または複数行の文を記述します。

処理の最後にあるbreak;というのは、この処理が終了したら、switch文の処理も終了するという意味です。

もし、break文が省略された場合、次のcaseラベルの値が何であるかに関わらず、次のcaseラベルも実行されます。

つまり、case1にしか当てはまらなくても、case1の処理でbreak;を使用していなければ、case10の処理も行われるという事です。

defaultラベルでは、どのcase文にも当てはまらない場合処理されます。

defaultラベルは省略可能ですが、Javaが提唱するコーディング規約に基づくと、正確に記述することを推奨しています。

 

田島悠介

switch文の基本形だね。

大石ゆかり

if文でも同じことができそうですが、こっちの方が分かりやすい感じがしますね。

田島悠介

次に実際の例で確かめてみよう。ここでは変数の桁数に応じて異なった処理を行うということをやってみるよ。

switch文を実際に書いてみます

それでは、式が1と10と100と1000の場合のcase文を作成してみます。

変数numの値が1の場合1桁、10の場合2桁、100の場合3桁、1000の場合4桁、これら以外の場合CASE以外と表示します。

今回は、変数numが1000ですので、実行結果は、「4桁」です。

実行結果:4桁

/* Ketahikakuというclassでプログラムを作成 */
public class Ketahikaku {
  public static void main(String[] args) {
    int num = 1000; /* 評価する数値1000を変数numに代入 */
    String keta;    /* ketaという変数で何桁かを表示 */
    switch (num) {
      case 1:
        keta ="1桁";
        break;
      case 10:
        keta ="2桁";
        break;
      case 100:
        keta ="3桁";
        break;
      case 1000:
        keta ="4桁";
        break;
      default:
        keta ="CASE以外"
        break;
    }
    System.out.println(keta); //実行結果:4桁
 }

今回はswitch文で多方向分岐制御のプログラムを書いてみました。

入門向けJavaの学習サイトもまとめているので、合わせてご覧ください。

 

田島悠介

変数numに色々数値を入れて実行してみよう。

大石ゆかり

入力した値の桁数に応じて、指定の文字列が表示されるようになりましたね。

田島悠介

それぞれの処理のあとのbreak;がないと、その次のcaseの処理も実行されてしまうんだ。break;を忘れないようにしよう。

大石ゆかり

気をつけます。ありがとうございました!

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。