Java switch case 文

switch case 文は、変数が一連の値のいずれかと等しいかどうかを判定し、各値は分岐と呼ばれます。

構文

switch case 文の構文形式は次のとおりです。

switch(expression){ case value : //文 break; //任意 case value : //文 break; //任意 //case 文は任意の数だけ持つことができます。 default : //任意 //文 }

switch case 文には次のルールがあります:

  • switch 文の変数の型は、byte、short、int または char にすることができます。Java SE 7 以降、switch は文字列 String 型をサポートしており、case ラベルは文字列定数またはリテラルでなければなりません。

  • switch 文は複数の case 文を持つことができます。各 case の後には、比較する値とコロンが続きます。

  • case 文の値のデータ型は変数のデータ型と同じでなければならず、定数またはリテラル定数のみを使用できます。

  • 変数の値が case 文の値と等しい場合、case 文の後の文が実行され始め、break 文が現れるまで switch 文から抜け出しません。

  • break 文に遭遇すると、switch 文は終了します。プログラムは switch 文の後の文にジャンプして実行します。case 文に break 文を含める必要は必ずしもありません。break 文がない場合、プログラムは次の case 文を実行し続け、break 文が現れるまで続けます。

  • switch 文には default 分岐を含めることができます。この分岐は通常、switch 文の最後の分岐です(任意の位置に置くことはできますが、最後に置くことをお勧めします)。default は、case 文の値と変数の値が等しくないときに実行されます。default 分岐に break 文は必要ありません。

switch case の実行時、必ず最初にマッチングが行われます。マッチングに成功すると現在の case の値を返し、break があるかどうかに応じて、出力を続けるか、判断を抜けるかを決定します。

実例

Test.java ファイルのコード:

public class Test { public static void main(String args[]){ //char grade = args[0].charAt(0); char grade = 'C'; switch(grade) { case 'A' : System.out.println("優秀"); break; case 'B' : case 'C' : System.out.println("良好"); break; case 'D' : System.out.println("合格"); break; case 'F' : System.out.println("あなたはもっと努力する必要があります"); break; default : System.out.println("未知のレベル"); } System.out.println("あなたのレベルは" + grade); } }

上記のコードをコンパイルして実行した結果は次のとおりです:

良好
你的等级是 C

case 文ブロック内に break 文がない場合、JVM は各 case に対応する戻り値を順番に出力するのではなく、マッチングを続け、マッチングが失敗した場合はデフォルトの case を返します。

Test.java ファイルのコード:

public class Test { public static void main(String args[]){ int i = 5; switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); default: System.out.println("default"); } } }

上記のコードをコンパイルして実行した結果は次のとおりです:

default

case 文ブロック内に break 文がない場合、マッチングが成功した後、現在の case から始まり、後続のすべての case の値が出力されます。

Test.java ファイルのコード:

public class Test { public static void main(String args[]){ int i = 1; switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); default: System.out.println("default"); } } }

上記のコードをコンパイルして実行した結果は次のとおりです:

1
2
default

現在マッチングに成功した case 文ブロックに break 文がない場合、現在の case から始まり、後続のすべての case の値が出力されます。後続の case 文ブロックに break 文があれば、判断を抜けます。

Test.java ファイルのコード:

public class Test { public static void main(String args[]){ int i = 1; switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); case 3: System.out.println("3"); break; default: System.out.println("default"); } } }

上記のコードをコンパイルして実行した結果は次のとおりです:

1
2
3
その他の拡張