# Java 中的`switch-case`语句及示例

> 原文： [https://beginnersbook.com/2017/08/java-switch-case/](https://beginnersbook.com/2017/08/java-switch-case/)

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

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

```java
switch (variable or an integer expression)
{
     case constant:
     //Java code
     ;
     case constant:
     //Java code
     ;
     default:
     //Java code
     ;
}
```

> Switch Case 语句主要用于 [break 语句](https://beginnersbook.com/2017/08/java-break-statement/)，即使它是可选的。我们将首先看到一个没有 break 语句的例子，然后我们将讨论 switch case 和 break

## 一个简单的`switch`案例

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

**输出：**

```java
Default: Value is: 2
```

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

## `switch`案例流程图

首先，评估在`switch`括号中提供的变量，值或表达式，然后根据结果，执行与结果匹配的相应案例块。
![switch case flow diagram](img/4f4a0032c3c6f26d1bc5a76c8a08546f.jpg)

## `switch-case`中的`break`语句

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

```java
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 ");
      }
   }
}

```

**Output:**

```java
Case2 
Case3 
Case4 
Default 

```

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

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

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

## break 语句的示例

```java
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 ");
      }
   }
}
```

**Output:**

```java
Case2
```

现在您可以看到只有案例 2 已被执行，其余案例被忽略。

**为什么我默认后不使用 break 语句？**
控件本身会在默认情况下从`switch`中出来，所以我没有使用它，但是如果您仍然想在默认情况下使用中断，那么您可以使用它，这样做没有坏处。

## 有关`switch-case`的几点意见

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

2）您也可以在`switch`盒中使用字符。例如 -

```java
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`的有效表达式：**

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

**无效的`switch`表达式：**

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

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

看看这些相关的 [java 程序](https://beginnersbook.com/2017/09/java-examples/)：

1.  [Java 程序使用 Switch Case 检查 char 是元音还是辅音](https://beginnersbook.com/2017/09/java-program-to-check-vowel-and-consonant-using-switch-case/)
2.  [使用 Switch Case 制作简单计算器的 Java 程序](https://beginnersbook.com/2017/09/java-program-to-make-a-calculator-using-switch-case/)