「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文で比較する値は、以下4種類の値を使います。
- 整数(byte型、short型、int型のいずれか)
- 文字列(String型)
- 文字(char型)
- 列挙型(enum)
少数や真偽値といった値は利用できません。
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通りの使い方を見ていきましょう。
- switch-case文 基本
- switch-case文 break
- switch-case文 default
- switch-case文 String型
- 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文を使いこなしてください!