logo

Java の Switch ステートメント

Javaのswitch文 は多方向分岐ステートメントです。簡単に言うと、Java switch ステートメントは複数の条件から 1 つのステートメントを実行します。

それはまるで もし、そうでなければ、もし ラダーステートメント。これにより、式の値に基づいてコードのさまざまな部分に実行をディスパッチする簡単な方法が提供されます。式は次のようになります。 バイト 短い チャー 、 または 整数 プリミティブなデータ型。複数の値に対して変数の等価性をテストします。



注記: Java スイッチ式は、byte、short、int、long (Wrapper 型を含む)、enum、および string である必要があります。 JDK7 以降、列挙型でも動作します ( 列挙型 Java)、 クラス、そして ラッパー クラス。

構文

switch(expression) {  case value1 :  // Statements  break; // break is optional    case value2 :  // Statements  break; // break is optional  ....  ....  ....  default :   // default Statement }>

例:

サイズプリンターの例

ジャワ
public class SizePrinter {  public static void main(String[] args) {  int sizeNumber = 2; // Replace with your desired size (1, 2, 3, 4, or 5)  switch (sizeNumber) {  case 1:  System.out.println('Extra Small');  break;  case 2:  System.out.println('Small');  break;  case 3:  System.out.println('Medium');  break;  case 4:  System.out.println('Large');  break;  case 5:  System.out.println('Extra Large');  break;  default:  System.out.println('Invalid size number');  }  } }>

出力:



Small>

Java Switch ステートメントの重要なルール

  1. 条件チェックを課すだけのケースはいくつでも存在できますが、重複したケース値は許可されないことに注意してください。
  2. ケースの値は、スイッチ内の変数と同じデータ型である必要があります。
  3. ケースの値は定数またはリテラルでなければなりません。 変数は使用できません。
  4. Break ステートメントは、スイッチ内でステートメント シーケンスを終了するために使用されます。
  5. Break ステートメントはオプションです。省略した場合、実行は次のケースに継続されます。
  6. デフォルトのステートメントはオプションであり、switch ブロック内のどこにでも使用できます。 case が最後でない場合は、次の case ステートメントの実行を省略するために、default ステートメントの後に Break ステートメントを保持する必要があります。
  Note: Until Java-6, switch case argument cannot be of String type but Java 7 onward we can use String type argument in Switch Case.>

Switch-Case ステートメントのフローチャート

このフローチャートは、制御フローと switch ステートメントの動作を示しています。

Javaのスイッチステートメントフローチャート

注記: Java switch ステートメントはフォールスルー ステートメントであり、次の場合にすべてのステートメントを実行します。 キーワードを区切る は使用されないため、各ケース内で Break キーワードを使用することが非常に重要です。



例: ファインディングデイ

次の Java プログラムを考えてみましょう。このプログラムは、値が day(1-7) を表す day という名前の int を宣言しています。このコードは、switch ステートメントを使用して、その日の値に基づいてその日の名前を表示します。

ジャワ
// Java program to Demonstrate Switch Case // with Primitive(int) Data Type // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  int day = 5;  String dayString;  // Switch statement with int data type  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  // Case  case 4:  dayString = 'Thursday';  break;  // Case  case 5:  dayString = 'Friday';  break;  // Case  case 6:  dayString = 'Saturday';  break;  // Case  case 7:  dayString = 'Sunday';  break;  // Default case  default:  dayString = 'Invalid day';  }  System.out.println(dayString);  } }>

出力
Friday>

switch case ステートメントのブレーク

ブレークステートメント はオプションです。ブレークを省略すると、実行は次のケースに継続されます。

場合によっては、複数のケースを用意することが望ましい場合があります。 壊す 彼らの間の発言。たとえば、上記のプログラムの更新バージョンを考えてみましょう。このプログラムでは、その日が平日であるか週末であるかも表示されます。

例:

複数のブレークなしでステートメントプログラムを切り替えます

ジャワ
// Java Program to Demonstrate Switch Case // with Multiple Cases Without Break Statements // Class public class GFG {  // main driver method  public static void main(String[] args)  {  int day = 2;  String dayType;  String dayString;  // Switch case  switch (day) {  // Case  case 1:  dayString = 'Monday';  break;  // Case  case 2:  dayString = 'Tuesday';  break;  // Case  case 3:  dayString = 'Wednesday';  break;  case 4:  dayString = 'Thursday';  break;  case 5:  dayString = 'Friday';  break;  case 6:  dayString = 'Saturday';  break;  case 7:  dayString = 'Sunday';  break;  default:  dayString = 'Invalid day';  }  switch (day) {  // Multiple cases without break statements  case 1:  case 2:  case 3:  case 4:  case 5:  dayType = 'Weekday';  break;  case 6:  case 7:  dayType = 'Weekend';  break;  default:  dayType = 'Invalid daytype';  }  System.out.println(dayString + ' is a ' + dayType);  } }>

出力
Tuesday is a Weekday>

Java のネストされた Switch ステートメント

を使用できます スイッチ として 一連のステートメントの一部 外側のスイッチ。 これはと呼ばれます ネストされたスイッチ 。 switch ステートメントはそのブロックを定義するため、内側のスイッチの case 定数と外側のスイッチの case 定数の間に競合は発生しません。

例:

ネストされた Switch ステートメント

ジャワ
// Java Program to Demonstrate // Nested Switch Case Statement // Class public class GFG {  // Main driver method  public static void main(String[] args)  {  // Custom input string  String Branch = 'CSE';  int year = 2;  // Switch case  switch (year) {  // Case  case 1:  System.out.println(  'elective courses : Advance english, Algebra');  // Break statement to hault execution here  // itself if case is matched  break;  // Case  case 2:  // Switch inside a switch  // Nested Switch  switch (Branch) {  // Nested case  case 'CSE':  case 'CCE':  System.out.println(  'elective courses : Machine Learning, Big Data');  break;  // Case  case 'ECE':  System.out.println(  'elective courses : Antenna Engineering');  break;  // default case  // It will execute if above cases does not  // execute  default:  // Print statement  System.out.println(  'Elective courses : Optimization');  }  }  } }>

出力
elective courses : Machine Learning, Big Data>

Switch ステートメントの Java Enum

列挙 (enum) は、強力かつ明確な方法です。 名前付き定数の固定セットを表します ジャワでは。

Enum は、型の安全性と読みやすさのため、Switch ステートメントで使用されます。

Java文字列ビルダー

例:

Switch での Enum の使用

ジャワ
// Java Program to Illustrate Use of Enum // in Switch Statement // Class public class GFG {  // Enum  public enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat }  // Main driver method  public static void main(String args[])  {  // Enum  Day[] DayNow = Day.values();  // Iterating using for each loop  for (Day Now : DayNow) {  // Switch case  switch (Now) {  // Case 1  case Sun:  System.out.println('Sunday');  // break statement that hault further  // execution once case is satisfied  break;  // Case 2  case Mon:  System.out.println('Monday');  break;  // Case 3  case Tue:  System.out.println('Tuesday');  break;  // Case 4  case Wed:  System.out.println('Wednesday');  break;  // Case 5  case Thu:  System.out.println('Thursday');  break;  // Case 6  case Fri:  System.out.println('Friday');  break;  // Case 7  case Sat:  System.out.println('Saturday');  }  }  } }>

出力
Sunday Monday Tuesday Wednesday Thursday Friday Saturday>

Java Switch Case のデフォルトステートメント

Switch ケースのデフォルトのケースは、一致するケースがない場合に実行するコードを指定します。

デフォルトのケースは、考えられるすべてのケースの最後に記述することが推奨されますが、switch ステートメント内の任意の場所に記述することができます。

例:

switch ステートメントの途中にデフォルトを書きます。

ユーザー名
ジャワ
/*package whatever //do not write package name here */ import java.io.*; class GFG {  public static void main (String[] args) {  int i=2;  switch(i){  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);    }  } }>

出力
2 3>

例:

switch ステートメントの開始時のデフォルトの記述

ジャワ
import java.io.*; class GFG {  public static void main(String[] args)  {  int i = 5;  switch (i) {  default:  System.out.println('Default');  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  case 3:  System.out.println(3);  }  } }>

出力
Default 1>

ケースラベルバリエーション

Case ラベルとスイッチ引数には定数式を使用できます。 switch 引数には変数式を指定できます。

例:

変数スイッチ引数を使用します。

ジャワ
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  switch (x + 1) {  case 1:  System.out.println(1);  break;  case 1 + 1:  System.out.println(2);  break;  case 2 + 1:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>

出力
3>

case ラベルを変数または変数式にすることはできません。定数式である必要があります。

ジャワ
import java.io.*; class GFG {  public static void main(String[] args)  {  int x = 2;  int y = 1;  switch (x) {  case 1:  System.out.println(1);  break;  case 2:  System.out.println(2);  break;  case x + y:  System.out.println(3);  break;  default:  System.out.println('Default');  }  } }>
./GFG.java:16: error: constant expression required  case x+y:  ^ 1 error>

Switch ステートメントの Java ラッパー

Java は 4 つを提供します ラッパークラス 使用するもの: switch ステートメントで Integer、Short、Byte、Long を使用します。

例:

スイッチケースの Java ラッパー。

ジャワ
public class WrapperSwitchExample {  public static void main(String[] args) {  Integer age = 25;  switch (age.intValue()) { // Extract primitive value for switch  case 25:  System.out.println('You are 25.');  break;  case 30:  System.out.println('You are 30.');  break;  default:  System.out.println('Age not matched.');  }  } }>

出力:

You are 25.>

注記:

デフォルトのケースは、その配置に関係なく、他のケース条件がいずれも満たされない場合にのみ実行されます。したがって、これを先頭、中間、または最後に配置しても、コアのロジックは変わりません (フォールスルーと呼ばれるあまり一般的ではない手法を使用している場合を除く)。

例: このコードでは、(1 ~ 7) の数字によって曜日を識別します。

ジャワ
import java.util.Scanner; public class Main {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print('Enter a day number (1-7): ');  int day = scanner.nextInt();  switch (day) {  default:  System.out.println('Not a valid weekday.');  break;  case 1:  System.out.println('It's Monday!');  break;  case 2:  System.out.println('It's Tuesday!');  break;  case 3:  System.out.println('It's Wednesday!');  break;  case 4:  System.out.println('It's Thursday!');  break;  case 5:  System.out.println('It's Friday!');  break;  case 6:  System.out.println('It's Saturday!');  break;  case 7:  System.out.println('It's Sunday!');  break;  }  } }>

出力

Enter a day number (1-7): 8 Not a valid weekday.>


続きを読む:

  • Java での Enum と Switch キーワードの使用法
  • JavaのSwitch Caseの文字列
  • Java チュートリアル

エクササイズ

Java switch ステートメントを練習するには、次のページにアクセスしてください。 Java Switch Case ステートメントの実践

結論

Java の Switch ステートメントは制御フロー構造であり、単一の式の値に基づいて特定のコード ブロックを実行できます。これらは、プログラミングにおける if-else-if ステートメントの代替として考えることができます。

Java Switch ステートメント - FAQ

Java で switch ステートメントを使用する方法

Java で switch ステートメントを使用するには、次の構文を使用できます。

スイッチ (式) {
ケース値1:
// 式が value1 に等しい場合に実行するコード
壊す;
ケース値2:
// 式が value2 に等しい場合に実行するコード
壊す;
// …その他のケース
デフォルト:
// 上記のいずれのケースにも一致しない場合に実行されるコード
}

スイッチに null を渡すことはできますか?

いいえ、switch ステートメントには定数式が必要なため、NULL を渡すことはできません。

switch ステートメントに戻ってもらえますか

いいえ、switch ステートメントはプログラム内に制御フローを構築するため、switch ケースを終了した後に戻ることはできません。