ある整数値によって 3 通り以上の別々の処理を実行したい!
Java の分岐ステートメントのひとつで、ある整数式の取りうる値により分岐が行われます。整数式の型は、char / byte / short / int です。
switch( 整数式 ) { case 定数式1:
コードブロック1;
break;.
case 定数式2:
コードブロック2;
break;
default:
コードブロック;
}
switch 文の動作は以下のようになります。
1 〜 10 の数字を足す処理を考えてみましょう。
int judge = 1;
System.out.println("start");
switch (judge) { case 1:
System.out.println("judge は 1 です。"); break;
case 2:
System.out.println("judge は 2 です。"); break; default: System.out.println("judge は 1 でも 2 でもありません。");
}
System.out.println("end");
上記の処理結果は以下のようになります。
start
judge は 1 です。
end
では、break 文がないとどうなるでしょうか?
int judge = 1;
System.out.println("start");
switch (judge) { case 1:
System.out.println("judge は 1 です。"); case 2:
System.out.println("judge は 2 です。"); default: System.out.println("judge は 1 でも 2 でもありません。");
}
System.out.println("end");
上記の処理結果は以下のようになります。
start judge は 1 です。 judge は 2 です。 judge は 1 でも 2 でもありません。 end
switch 文を使ってプログラムを作る時は、作る前に一回プログラムを見直しましょう。
一般的に、switch 文が使われているプログラムは、良くないプログラム、わかりにくいプログラムの可能性が非常に高いと言われています。
switch 文で作られたプログラムが、各条件で break 処理される場合は、分岐されやすい(条件に当てはまる確率が高い)条件順に並べた方が、性能が良くなります。
一般的に、switch 文で作られたプログラムと、if 〜 else if 〜 else if ・・・で作るプログラムがコンパイル後のクラスファイルの容量は、3つ以内の場合 if 〜 else if 〜 else if ・・・で書いた方が、小さくなります。3つより大きい場合は、無制限にswitch 文を使えば良いのですが、3つの場合はソースが見やすい switch 文のほうを重視した方が良いと思います。容量にこだわる場合は、調整してみましょう。