【Java入門】switch文の使い方をマスターしよう!




皆さんこんにちは新米エンジニアの新米です。

本記事ではJava言語でのswitch文の書き方やルールについて解説していきたいと思います。

switch文とは?switch文の使い方をマスターしよう!

switch文とは多分岐処理を行う中の一つです。例えば、if文なんかもそうです。

多分岐処理は名前の通り、複数の条件を用意し条件に一致した際に条件内の処理を行う事です。

新米太郎
新米太郎

条件をあらかじめ用意しておくんだね!

<構文>

switch文は式と一致したcaseの処理を行います。比較は上のcaseから比較され一致しない場合は次のcaseを比較します。また、caseはいくつでも指定することが可能です。

switch文で気をつけること(いくつかルールがあります。)

構文を説明したところで次にswitch文のいくつかルールを解説します。

switch()
の結果(値)は以下のデータ型では無いといけません。

char,byte,short,intおよびそのラッパークラス,enum,String

それ以外の型を式に指定するとコンパイルエラーになります。また式の結果がnullの場合コンパイルは成功しますが、実行時に例外が発生します。

新米太郎
新米太郎

例えば式の結果がdouble型だったらコンパイルエラーになるよ。

>>ラッパークラスがわからない人はこちら

breakの追加

caseに記述した処理文を実行した後、switch文を抜けたい場合はcase内の最後の処理文としてbreak文を記述します。

break文を記述しないと次のcase内の処理も実行しちゃうので気をつけましょう。

[サンプル]

この場合ですと、case1の処理を行なってからbreakでswith文を抜けます。 

新米太郎
新米太郎

break文を記述しないと次の処理も実行されるよ

defaultの追加

defaultはelse文に似ており、式がどのcaseとも一致しない場合かつ処理を実行させたい時に記述します。

・defaultの位置はswitch内のどこでもOK!
・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文が適しています。
分岐を記述する前に一度どちらが適しているか考えて見てくださいね!



コメント

タイトルとURLをコピーしました