### switch 多分支语句

在编程中一个常见的问题就是检测一个变量是否符合某个条件，如果不匹配，再用另一个值来检测它，依此类推。当然，这种问题使用 if 条件语句可以完成。

例 使用 if 语句检测变量是否复合某个条件，关键代码如下：

String grade = "A";

if (grade == "A") {

System.out.println("真棒");

}

if (grade == "B") {

System.out.println("做的不错");

}

这个程序显得比较笨重，程序员需要测试不同的值来给出输出语句。在 Java 中，你可以用 switch 语句将动作组织起来，就能以一个较简单明了的方式来实现“多选一”的选择。

语法：

switch(表达式){

case 常量 1:

语句 1

[break;]

case 常量 2:

语句 2

[break;]

…

case 常量 n:

语句 n

[break;]

default:

默认处理语句;

[break;]

}

表达式：这是必要的参数，它的结果用于判断执行的 case 子句。

case 常量：必要的参数，它是分支的入口，用于执行特定于常量的操作。

语句：可以是多条语句，但不是复合语句，因为不需要使用花括号“{ }”，它是分支的业务处理代码。

break：可选参数，一般放在 case 分支语句的最后，在完成操作后，用于跳出 switch 语句，继续执行程序的其它流程。

default：这是可选参数，它是 switch 语句的默认分支入口，如果表达式的值和所有 case 子句的常量都不匹配，那么将执行 default 分支下的语句。

注意：同一个 switch 语句，case 的常量值必须互不相同。

switch 语句的流程如图 1 所示。

图 1 switch 语句的执行过程

例 在项目中创建类 GetSwitch，在主方法中应用 switch 语句将周一至周三的英文单词打印出来。

public class GetSwitch { //创建类

public static void main(String args[]) { //主方法

int week = 2; //定义 int 型变量 week

switch (week) { //指定 switch 语句的表达式为变量 week

case 1: //定义 case 语句中的常量为“1”

System.out.println("Monday"); //输出信息

break;

case 2: //定义 case 语句中的常量为“2”

System.out.println("Tuesday");

break;

case 3: //定义 case 语句中的常量为“3”

System.out.println("Wednesday");

break;

default: //default 语句

System.out.println("Sorry,I don't Know");

}

}

}

运行结果如图 2 所示：

图 2 运行结果

注意：在 switch 语句中，case 语句后的常量表达式的值可以为整数，但绝不可以是实数，例如下面的代码就是不合法的：

case 1.1;

常量表达式的值可以是字符，但一定不可以是字符串。例如下面的代码也是非法的：

case "ok";