目次
01. switch文とは
02. サンプル
switch文とは
switch文の構造とサンプル
複数の条件で処理を分岐する時に使用します。
if文で複数の条件を書くよりも見やすくなります。
switch(式){ case 値 : 処理 break; case 値 : 処理 break; default: 処理 } |
コード
public class Test1 {
public static void main(String[] args) {
String a = "2";
switch (a) {
case "1":
System.out.println("one");
break;
case "2":
System.out.println("two"); // two
break;
default:
System.out.println("other");
}
}
}
5行目は、aの値が2なので9行目のcaseに進みます。
9行目は、aの値が2なので10行目の処理を行います。
11行目は、breakがあるのでswitch文の処理は終了し15行目に進みます。
point
・式の結果とcaseの値が一致すれば、配下の処理が実行されます。
・caseは複数記述できます。
・breakでswitch文を抜けます。breakがないと下の判定(case/default)に行ってしまいます(フォールスルー)。
・defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
・JavaSE7以降であればswitch文で文字列の判定もできます。
ただし、値がnullの場合、NullPointerException例外が発生するので判定をする際は、switch文の前に値がnullでないことを確認したほうがよいです(nullをチェック)。
nullをチェックするサンプル
String a = null;
if (a == null) {
System.out.println("null"); // null
} else {
switch (a) {
case "a":
System.out.println("one");
break;
case "b":
System.out.println("two");
break;
default:
System.out.println("three");
}
}
値がnullでない場合は、6行目のelseからswitch文が実行されます。
point
判定する変数がstring型の場合、NullPointerExceptionの例外が起きる可能性があります。
そのためにswitch文の前でnullをチェックしています。
フォールスルー(breakがない場合)
String a = "1";
switch (a){
case "1":
System.out.println("one"); // one
case "2":
System.out.println("two"); // two
break;
default:
System.out.println("other");
}
6行目は、breakがありません。
5行目のcase "1"の処理の後、7行目のcase"2"の処理も実行されます。
point
フォールスルー(fall through/落ちる)と呼ばれます。
breakを書き忘れたのかわかりづらいので使用しないほうが良いです。
switch文の中でif文を使用する
int a = 3;
switch (a){
case 3:
if (a % 2 == 0) {
System.out.println("even");
} else {
System.out.println("odd"); // oddが出力される
}
break;
default:
System.out.println("other");
}
5行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。
point
switch文の中でif文を使用できます。
enumで判定するサンプル
enum Color {
RED,
YELLOW,
BLUE
}
public class Test1 {
public static void main(String[] args) {
Color color = Color.YELLOW;
switch (color) {
case RED:
System.out.println("red");
break;
case YELLOW:
System.out.println("yellow"); // yellow
break;
case BLUE:
System.out.println("blue");
break;
default:
System.out.println("other");
}
}
}
1-5行目は、enumです。
8行目で値を取得し10行目から判定しています。
point
enumの判定でswitch文はよく使われます。
関連の記事