皆さんこんにちは新米エンジニアの新米です。
本記事ではJava言語でのswitch文の書き方やルールについて解説していきたいと思います。
switch文とは?switch文の使い方をマスターしよう!
switch文とは多分岐処理を行う中の一つです。例えば、if文なんかもそうです。
多分岐処理は名前の通り、複数の条件を用意し条件に一致した際に条件内の処理を行う事です。

条件をあらかじめ用意しておくんだね!
<構文>
switch文は式と一致したcaseの処理を行います。比較は上のcaseから比較され一致しない場合は次のcaseを比較します。また、caseはいくつでも指定することが可能です。
switch文で気をつけること(いくつかルールがあります。)
構文を説明したところで次にswitch文のいくつかルールを解説します。
・switch(式)
式の結果(値)は以下のデータ型では無いといけません。
それ以外の型を式に指定するとコンパイルエラーになります。また式の結果がnullの場合コンパイルは成功しますが、実行時に例外が発生します。

例えば式の結果がdouble型だったらコンパイルエラーになるよ。
breakの追加
caseに記述した処理文を実行した後、switch文を抜けたい場合はcase内の最後の処理文としてbreak文を記述します。
break文を記述しないと次のcase内の処理も実行しちゃうので気をつけましょう。
[サンプル]
この場合ですと、case1の処理を行なってからbreakでswith文を抜けます。

break文を記述しないと次の処理も実行されるよ
defaultの追加
defaultはelse文に似ており、式がどのcaseとも一致しない場合かつ処理を実行させたい時に記述します。
・defaultはswitch文の中ならどこに記述しても問題ありません。(※caseの上に記述すると先にdefaultの処理を実行後、caseの処理実行もしてしまいます。)
・記述は任意で省略することが可能です。

いずれかのcaseと式が必ず一致する場合はdefaultは記述しなくて良いね!またdefaultは基本最後に記述します。
式の宣言ルール
int a = 2;
switch(int b = 2){}//変数宣言はNG(コンパイルエラー)
switch(a + 1){}//OK
switch(a++){}//OK
変数の宣言を式に記述するのはできないので気をつけましょう!
また式にインクリメントを記述する場合は気をつける事があります。実際に式にインクリメントを記述したswitch文を見てみよう。
[サンプル]
int a = 1; switch(a++){ case 1: System.out.print("値は1です"); break; case 2: System.out.print("値は2です"); break; }
値は1です
a++の場合、式の評価後にインクリメントが実行されます。++aの場合はインクリメントされてから式が評価されます。
switch文の宣言+α
public class Main { public static void main(String[] args) { int a = 3; switch(a){ case 1: case 2: System.out.print("1または2"); break; case 3: case 4: System.out.print("3または4"); break; default: System.out.print("1,2,3,4では無い"); } } }
3または4
このようにcase1とcase2のどちらかが一致した場合に処理を行う記述も可能です。

if文のORに似ているね!
まとめ:If文とswitch文の使い分け
いかがだったでしょうか?
今回の記事を読んで「なんだかIf文に似ているな〜?」と思った方もいるのではないでしょうか?
基本If文だけでswitchと同じ処理を記述することは可能ですが、条件が多いとelse ifを何度も記述しなくてはいけないときがあります。また条件式を多く記述すると可読性が落ちる可能性もあります。
なので多分岐の場合はswitch文、二分岐の場合はIf文が適しています。
分岐を記述する前に一度どちらが適しているか考えて見てくださいね!
コメント