原文: https://beginnersbook.com/2017/08/java-switch-case/

当我们有多个选项(或选项)时,会使用 Switch case语句,我们可能需要为每个选项执行不同的任务。

Switch case语句的语法如下所示:

  1. switch (variable or an integer expression)
  2. {
  3. case constant:
  4. //Java code
  5. ;
  6. case constant:
  7. //Java code
  8. ;
  9. default:
  10. //Java code
  11. ;
  12. }

Switch Case语句主要用于break语句,即使它是可选的。我们将首先看到一个没有break语句的例子,然后我们将讨论switch casebreak

一个简单的switch case

public class SwitchCaseExample1 {

   public static void main(String args[]){
     int num=2;
     switch(num+2)
     {
        case 1:
      System.out.println("Case1: Value is: "+num);
    case 2:
      System.out.println("Case2: Value is: "+num);
    case 3:
      System.out.println("Case3: Value is: "+num);
        default:
      System.out.println("Default: Value is: "+num);
      }
   }
}

输出:

Default: Value is: 2

说明:switch中我给出了一个表达式,你也可以给变量。我给了num + 2,其中num值是 2,并且在添加之后表达式得到 4.由于没有用值 4 定义的情况,所以执行了默认情况。这就是为什么我们应该在switch case中使用default,这样如果没有匹配条件,则执行默认块。

switch case流程图

首先,求值在switch括号中提供的变量,值或表达式,然后根据结果,执行与结果匹配的相应case块。

Java 中的`switch-case`语句 - 图1

switch-case中的break语句

在 switch case 中,break 语句是可选的,但几乎每次处理 switch case 时都会使用它。在我们讨论 break 语句之前,让我们看看下面的例子,我没有使用 break 语句:

public class SwitchCaseExample2 {

   public static void main(String args[]){
      int i=2;
      switch(i)
      {
     case 1:
       System.out.println("Case1 ");
     case 2:
       System.out.println("Case2 ");
     case 3:
       System.out.println("Case3 ");
     case 4:
           System.out.println("Case4 ");
     default:
       System.out.println("Default ");
      }
   }
}

输出:

Case2 
Case3 
Case4 
Default

在上面的程序中,我们已经将整数值 2 传递给了switch,所以控制切换到了case 2,但是在case 2之后我们没有使用break语句导致流程传递到后续case直到结束。这个问题的解决方案是break语句

当您希望程序流从switch主体中出来时,使用Break语句。每当在switch主体中遇到break语句时,执行流程将直接从switch中出来,忽略其余的情况。

让我们采用相同的例子,但这次使用break语句。

break语句的示例

public class SwitchCaseExample2 {

   public static void main(String args[]){
      int i=2;
      switch(i)
      {
     case 1:
       System.out.println("Case1 ");
       break;
     case 2:
       System.out.println("Case2 ");
       break;
     case 3:
       System.out.println("Case3 ");
       break;
     case 4:
           System.out.println("Case4 ");
           break;
     default:
       System.out.println("Default ");
      }
   }
}

输出:

Case2

现在您可以看到只有case 2已被执行,其余case被忽略。

为什么我默认后不使用break语句?

控制流本身会在默认情况下从switch中出来,所以我没有使用它,但是如果您仍然想在默认情况下使用break,那么您可以使用它,这样做没有坏处。

有关switch-case的几点意见

1)case并不总是需要顺序 1,2,3 等。它可以在case关键字后面包含任何整数值。此外,case不需要始终按升序排列,您可以根据要求以任何顺序指定它们。

2)您也可以在switch case中使用字符。例如:

public class SwitchCaseExample2 {

   public static void main(String args[]){
      char ch='b';
      switch(ch)
      {
     case 'd':
       System.out.println("Case1 ");
       break;
     case 'b':
       System.out.println("Case2 ");
       break;
     case 'x':
       System.out.println("Case3 ");
       break;
     case 'y':
           System.out.println("Case4 ");
           break;
     default:
       System.out.println("Default ");
      }
   }
}

3)switch内部给出的表达式应该是一个常量值,否则它将无效。

例如:

switch的有效表达式:

switch(1+2+23)
switch(1*2+3%4)

无效的switch表达式:

switch(ab+cd)
switch(a+b+c)

4)允许嵌套switch语句,这意味着你可以在另一个switch内部使用switch语句。但是应该避免使用嵌套的switch语句,因为它会使程序更复杂,更不易读。

看看这些相关的 java 程序

  1. Java 程序:使用Switch Case检查字符是元音还是辅音
  2. Java 程序:使用Switch Case制作简单计算器