Java 简明教程

Java - switch statement

Java switch Statement

Java switch statement 允许测试 variable 是否与值列表相等。每个值都称为案例,并且会检查切换的变量以查找每个案例。

当需要多个 if-else statements 时,可以 switch 语句。它可以有多个代码块以及案例值,并根据匹配的案例值执行多个代码块中的一个。

Syntax

Java switch 语句的语法为:

switch(expression) {
   case value :
      // Statements
      break; // optional

   case value :
      // Statements
      break; // optional

   // You can have any number of case statements.
   default : // Optional
      // Statements
}

Rules

以下规则适用于 switch 语句:

  1. switch 语句中使用的变量只能是整数、可转换整数(字节、短整数、字符)、字符串和枚举。

  2. 你可以在 switch 中放置任意数量的 case 语句。每个 case 后面都跟一个要比较的值和一个冒号。

  3. case 的值必须与 switch 中变量的数据类型相同,它必须是一个常量或一个字面量。

  4. 当正在切换的变量等于某个 case 时,将执行该 case 后面的语句,直到到达 break 语句。

  5. 当到达 break 语句时,switch 终止,并且控制流跳到 switch 语句后面的下一行。

  6. 并非每个 case 都需要包含 break。如果没有出现 break,则控制流会向下至后续 case,直到到达 break。

  7. switch 语句可以包含一个可选的 default case,它必须出现在 switch 的末尾。default case 可用于在所有 case 都为假时执行任务。default case 中不需要 break。

Flow Diagram

switch statement

Examples

Example 1

在此示例中,我们展示了 switch 语句的使用,其中 case 基于字符。我们创建了一个变量 grade。根据 grade 的值,检查每个 case。如果满足了一个 case 并且存在 break 语句,则不会检查后续 case。

public class Test {

   public static void main(String args[]) {
      char grade = 'C';

      switch(grade) {
         case 'A' :
            System.out.println("Excellent!");
            break;
         case 'B' :
         case 'C' :
            System.out.println("Well done");
            break;
         case 'D' :
            System.out.println("You passed");
         case 'F' :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}

使用各种命令行参数编译并运行上述程序。这会产生以下结果:

Well done
Your grade is C

Example 2

在此示例中,我们将展示基于 int 的交换语句的使用方法。我们创建了一个变量 grade。根据 grade 的值,检查每个 case。如果 case 满足并且有 break 语句,则后续 case 将不会被检查。

public class Test {

   public static void main(String args[]) {
      int grade = 3;

      switch(grade) {
         case 1 :
            System.out.println("Excellent!");
            break;
         case 2 :
         case 3 :
            System.out.println("Well done");
            break;
         case 4 :
            System.out.println("You passed");
         case 5 :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}

使用各种命令行参数编译并运行上述程序。这会产生以下结果:

Well done
Your grade is 3

Example 3

在此示例中,我们将展示基于字符串的交换语句的使用方法。我们创建了一个变量 grade。根据 grade 的值,检查每个 case。如果 case 满足并且有 break 语句,则后续 case 将不会被检查。

public class Test {

   public static void main(String args[]) {
      String grade = "C";

      switch(grade) {
         case "A" :
            System.out.println("Excellent!");
            break;
         case "B" :
         case "C" :
            System.out.println("Well done");
            break;
         case "D" :
            System.out.println("You passed");
         case "F" :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}

使用各种命令行参数编译并运行上述程序。这会产生以下结果:

Well done
Your grade is C

The default Keyword

default 关键字用于在没有匹配的 case 值时指定代码块。default 关键字是可选的,但应在 switch case 语句中使用。