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
良好
ICP备案:
公安联网备案: