Java switch case语句的用法
Java switch 语句由一个控制表达式和多个 case 标签组成。
switch 语句的语法格式如下:
在 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 的语句块)。例如:
另外,从语法的角度来看,default 的语句块是允许省略的。但是从代码规范性的角度来看,一般强调必须提供 default 的语句块。
【实例】利用 switch 语句判断成绩等级。
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
良好