Javaの制御文のうち、switch文について説明します。
出来ることはif文と同じなのですが場合によってはif文よりもシンプルに記述できる場合があります。
基本文法
1 2 3 4 5 6 7 8 9 10 11 12 | switch (式){ case 定数 1 : 実行する文 1 ; 実行する文 2 ; ... break ; case 定数 2 : 実行する文 1 ; 実行する文 2 ; ... break ; } |
※Java SE7から式にString型が利用できるようになりました。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 | int a = 2 ; switch (a) { case 1 : System.out.println( "aは1" ); break ; case 2 : System.out.println( "aは2" ); break ; case 3 : System.out.println( "aは3" ); break ; } |
実行結果
aは2
とコンソールに出力されます。
注意事項
breakを書き忘れることが多いので注意しましょう。
breakを書かないと、処理が中断されず意図しない条件が実行されてしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 | int a = 2 ; switch (a) { case 1 : System.out.println( "aは1" ); break ; case 2 : System.out.println( "aは2" ); case 3 : System.out.println( "aは3" ); break ; } |
実行結果
「case 2」にbreakを記述し忘れた場合の実行結果は以下のようになります。
aは2
aは3
同じ命令文を実行する場合
たとえば、定数2と定数3のときに同じ命令を実行する場合は以下のように記述します。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 | int a = 3 ; switch (a) { case 1 : System.out.println( "aは1" ); break ; case 2 : case 3 : System.out.println( "aは2又は3" ); break ; } |
いずれの式にも当てはまらなかった場合に命令文を実行する方法
if文のElseのようにどれにも条件が合致しない場合に命令文を実行させるには「default」を利用します。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | int a = 4 ; switch (a) { case 1 : System.out.println( "aは1" ); break ; case 2 : System.out.println( "aは2" ); break ; case 3 : System.out.println( "aは3" ); break ; default : System.out.println( "aは1~3以外" ); } |
実行結果
aは1~3以外