バナー画像

「Javaのswitch-case文の使い方がイマイチわからない…」

「switch-case文とif文ってどう使い分けるんだろう?」

こんな風に思ってる方はいませんか?

そこで今回は、現役システムエンジニアの私が、Javaのswitch-case文の使い方をご紹介します。

サンプルプログラム付きで紹介するので、ぜひ参考にしてくださいね。

この記事で学べること
  • switch-case文の使い方
  • switch-case文で使える変数の型
  • switch-case文とif文の違い

switch-case文とは?

switch-case文とは、Javaで条件分岐を行うときに使う命令文です。

if文とはまた違った記述方法で分岐を行います。

では、switch-case文とif文はどんなときに使い分ければいいのかをご紹介しますね。

switch-case文とif文の違い

switch-case文とif文の違いがよくわかりません…。どのように使い分ければよいのでしょうか?

ここでは、switch-case文が使える条件を見て、それぞれの違いを確認していきましょう。

if文とは異なり、switch-case文には使うための条件があります。これがif文との大きな違いといえるでしょう。

switch-case文が使える条件は以下の2つです。

switch-case文が使える条件
  • すべての条件式が、左辺と右辺が一致するかを比較する式になっていること
  • 比較する値が整数、文字列、文字のいずれかであること

ひとつずつ、解説します。

すべての条件式が、左辺と右辺が一致するかを比較する式になっていること

switch-case文で使うすべての条件式は、左辺と右辺が一致するかを比較する式でなくてはいけません。

「変数 == 値」や「変数 == 変数」はswitch-case文で使用可能です。一方で「変数 > 値」や「変数 <= 変数」などは使用できません。

比較する値が整数、文字列、文字のいずれかであること

switch-case文で比較する値は、以下4種類の値を使います。

少数や真偽値といった値は利用できません。

switch-case文で書くべきなのはどんな場合?

switch-case文を使うのはズバリ、if文よりもスマートに条件式を書けるときです。

例えば、以下のようなプログラムを見たときに「else ifが何個もあって読みづらい…」と感じるのではないでしょうか?

if(sample==1){
    System.out.println("Sample1を実行します");
}else if(sample==2){
    System.out.println("Sample2を実行します");
}else if(sample==3){
    System.out.println("Sample3を実行します");
}

その点、switch-case文を使うと、以下のようにスッキリとしたコードに変わります。

switch(sample){
    case 1:
        System.out.println("Sample1を実行します");
        break;
    case 2:
        System.out.println("Sample2を実行します");
        break;
    case 3:
        System.out.println("Sample3を実行します");
}

仕事などで使うプログラムは、自分以外の人が読んでも読みやすいコードが求められます。

そのため、switch-case文で処理をスッキリさせわかりやすくなるのであれば、利用すべきといえるのです。

switch-case文の使い方

ここでは、switch-case文の以下5通りの使い方を見ていきましょう。

  1. switch-case文 基本
  2. switch-case文 break
  3. switch-case文 default
  4. switch-case文 String型
  5. switch-case文 Enum型

1. switch-case文 基本

先ほどご紹介したプログラムで、switch-case文の基本を説明します。

switchには条件式として「sample」が設定されています。「sample」は「sample==2」と同じ意味です。

case文でそれぞれsampleが1、2、3だった場合の処理を記述します。

public class Main {
  public static void main(String args[]) {
    int sample = 2;
    switch(sample) {
      // sampleが1の場合の処理
      case 1:
        System.out.println("Sample1を実行します");
        break;
      // sampleが2の場合の処理
      case 2:
        System.out.println("Sample2を実行します");
        break;
      // sampleが3の場合の処理
      case 3:
        System.out.println("Sample3を実行します");
    }
  }
}

このプログラムを実行すると、以下の結果になるはずです。

↓実行結果

Sample2を実行します

2. switch-case文 break

switch-case文で使われている「break」は、処理を中断するために使われています。

case文を使用する際は、必ずそれぞれのcase文にbreakを入れて処理を終わらせるようにしましょう。

もしも、breakを入れなかった場合は、以下のような挙動をしてしまいます。

public class Main {
  public static void main(String args[]) {
    int sample = 2;
    switch(sample) {
      // sampleが1の場合の処理
      case 1:
        System.out.println("Sample1を実行します");
      // sampleが2の場合の処理
      case 2:
        System.out.println("Sample2を実行します");
      // sampleが3の場合の処理
      case 3:
        System.out.println("Sample3を実行します");
    }
  }
}

↓実行結果

Sample2を実行します
Sample3を実行します

case2の後にcase3の処理まで実行してしまっているのがわかりますね…。

3. switch-case文 default

switch-case文で「default」を使うと、caseに当てはまらない場合の処理を設定できます。

例外処理などを設定したいときに使うといいでしょう。

public class Main {
  public static void main(String args[]) {
    int sample = 10;
    switch(sample) {
      case 1:
        System.out.println("Sample1を実行します");
        break;
      case 2:
        System.out.println("Sample2を実行します");
        break;
      case 3:
        System.out.println("Sample3を実行します");
        break;
      default:
        System.out.println("Sampleを実行できませんでした");
    }
  }
}

↓実行結果

Sampleを実行できませんでした

4. switch-case文 String型

Java SE 7以降では、switch-case文でString型を条件として使えるようになりました。

String型の条件を用いたサンプルプログラムもご紹介しますね。

public class Main {
  public static void main(String args[]) {
    String str = "ポテパン";
    switch(str) {
      case "ポテパン":
        System.out.println("条件に" + str + "が設定されています");
        break;
      case "Java":
        System.out.println("条件に" + str + "が設定されています");
        break;
      case "case文":
        System.out.println("条件に" + str + "が設定されています");
        break;
      default:
        System.out.println("どの条件にも当てはまりませんでした");
    }
  }
}

↓実行結果

条件に ポテパン が設定されています

アルファベットは大文字、小文字まで判定されるので、設定には注意しましょう。

5. switch-case文 Enum型

switch-case文では、Enum型も条件式として使用可能です。

Enum型について詳しく知りたい方は、以下の記事で詳しく解説しているので参考にしてください。

【関連記事】

▶︎初心者のためのJava講座。Enum(列挙型)の色々な使い方

ここでは、Enum型を使ったプログラムを見ていきましょう。

public class Main {
  public static void main(String args[]) {
    Programing prog = Programing.Java;
    switch(prog) {
      case Java:
        System.out.println("条件に Java が設定されています");
        break;
      case PHP:
        System.out.println("条件に PHP が設定されています");
        break;
      case Ruby:
        System.out.println("条件に Ruby が設定されています");
        break;
      default:
        System.out.println("どの条件にも当てはまりませんでした");
    }
  }

  // 列挙子の定義
  protected enum Programing {
      Java,
      PHP,
      Ruby,
  };
}

↓実行結果

条件に Java が設定されています

Programingで定義されているJavaが、条件式として利用できているのがわかります。

まとめ

Javaのcase文の使い方についてご紹介しました。

case文は、処理の中で条件分岐を行うときに使う命令文です。

条件式には整数や文字列、文字などが利用でき、左辺と右辺が一致するかを比較する場合にif文よりスッキリコードが書けます。

ぜひこの記事を参考に、case文を使いこなしてください!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。