首页 > 编程笔记

Java switch case语句的用法

Java switch 语句由一个控制表达式和多个 case 标签组成。

switch 语句的语法格式如下:
switch(控制表达式){
   case 常量1:
      语句块1;
      break;
   case 常量2:
      语句块2;
      break;
   ......
   case 常量n:
      语句块n;
      break;
   default:
      语句块n+1;
      break;
}
switch 语句中的控制表达式的数据类型在 Java 5 之前只能是 byte、short、int 和 char 这 4 种类型,枚举类型和字符串类型从 Java 7 才允许使用。

在 case 语句中给出的必须是一个常量,并且 case 语句中的常量值各不相同。

当程序执行到 switch 语句时,首先计算控制表达式的值,假设值为 A。然后将 A 与第 1 条 case 语句中的常量 1 进行匹配,若值相等则执行语句块 1,语句块执行完成后不跳出 switch 语句,直到遇到第 1 条 break 语句时才跳出 switch 语句。

如果 A 与常量 1 不相等,那么与第 2 条 case 语句中的常量 2 进行匹配,若值相等则执行语句块 2,以此类推,直到执行语句块 n。

如果所有的 case 语句都没有执行,就会执行 default 的语句块 n+1,执行完毕就跳出 switch 语句。

简单总结,switch 语句是根据控制表达式的值与 case 语句中的常量值是否相等来选择执行哪个语句块的。

需要特别注意的是,如果没有遇到 break 语句,那么 switch 语句将从匹配的 case 语句对应的语句块一直向下执行,直到 switch 语句完全结束(包括 default 的语句块)。例如:
int a=l;
switch (a){
   case 1:
      System.out.println(1); // 语句 1
   case 2:
      System.out.println(2); // 语句 2
   case 3:
      System.out.println(3); // 语句 3
   default:
      System.out.println(4); // 语句 4
}
在上述示例中,语句1~语句4均会被执行。

另外,从语法的角度来看,default 的语句块是允许省略的。但是从代码规范性的角度来看,一般强调必须提供 default 的语句块。

【实例】利用 switch 语句判断成绩等级。
import java.util.Scanner; // 导入Scanner类

public class Example2_9 {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in); // 创建Scanner对象以接收键盘输入
        System.out.print("请输入整数分数:"); // 提示用户输入整数分数

        int score = reader.nextInt(); // 读取用户输入的整数

        switch (score / 10) {
            case 10:
            case 9:
                System.out.println("优秀");
                break;
            case 8:
                System.out.println("良好");
                break;
            case 7:
                System.out.println("中等");
                break;
            case 6:
                System.out.println("及格");
                break;
            default:
                System.out.println("不及格");
        }
    }
}
运行结果为:

请输入整数分数:
87
良好

推荐阅读