Java 简明教程

Java - switch statement

Java switch Statement

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

The Java switch statement allows a variable to be tested for equality against a list of values. Each value is called a case, and the variable being switched on is checked for each case.

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

The switch statement can be used when multiple if-else statements are required. It can have multiple code blocks along with the case values and executes one of many code blocks based on the matches case value.

Syntax

Java switch 语句的语法为:

The syntax of Java switch statement is −

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 语句:

The following rules apply to a switch statement −

  1. The variable used in a switch statement can only be integers, convertable integers (byte, short, char), strings and enums.

  2. You can have any number of case statements within a switch. Each case is followed by the value to be compared to and a colon.

  3. The value for a case must be the same data type as the variable in the switch and it must be a constant or a literal.

  4. When the variable being switched on is equal to a case, the statements following that case will execute until a break statement is reached.

  5. When a break statement is reached, the switch terminates, and the flow of control jumps to the next line following the switch statement.

  6. Not every case needs to contain a break. If no break appears, the flow of control will fall through to subsequent cases until a break is reached.

  7. A switch statement can have an optional default case, which must appear at the end of the switch. The default case can be used for performing a task when none of the cases is true. No break is needed in the default case.

Flow Diagram

switch statement

Examples

Example 1

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

In this example, we’re showing use of switch statement where cases are based on a char. We’ve created a variable grade. Based on value of grade, each case is checked. if a case is satisfied and break statement is present then following cases are not checked.

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);
   }
}

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

Compile and run the above program using various command line arguments. This will produce the following result −

Well done
Your grade is C

Example 2

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

In this example, we’re showing use of switch statement where cases are based on a int. We’ve created a variable grade. Based on value of grade, each case is checked. if a case is satisfied and break statement is present then following cases are not checked.

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);
   }
}

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

Compile and run the above program using various command line arguments. This will produce the following result −

Well done
Your grade is 3

Example 3

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

In this example, we’re showing use of switch statement where cases are based on a String. We’ve created a variable grade. Based on value of grade, each case is checked. if a case is satisfied and break statement is present then following cases are not checked.

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);
   }
}

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

Compile and run the above program using various command line arguments. This will produce the following result −

Well done
Your grade is C

The default Keyword

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

The default keyword is used to specify a code block when no case value is matched. The default keyword is optional, but it should be used in the switch case statement.