「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文を使いこなしてください!