switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch 语句是非常的基础的知识,掌握起来也不难掌握,语法比较简单。但大部分人基本是知其然,不知其所以然。譬如 早期JDK只允许switch的表达式的值 int及int类型以下的基本类型,后期的JDK却允许匹配比较 字符串、枚举类型
switch case 语句语法格式如下:
- switch(expression){
- case value :
- //语句
- break; //可选
- case value :
- //语句
- break; //可选
- //你可以有任意数量的case语句
- default : //可选
- //语句
- }
- public class Test {
- public static void main(String args[]){
- //char grade = args[0].charAt(0);
- char grade = 'C';
-
- switch(grade)
- {
- case 'A' :
- System.out.println("优秀");
- break;
- case 'B' :
- case 'C' :
- System.out.println("良好");
- break;
- case 'D' :
- System.out.println("及格");
- break;
- case 'F' :
- System.out.println("你需要再努力努力");
- break;
- default :
- System.out.println("未知等级");
- }
- System.out.println("你的等级是 " + grade);
- }
- }
代码编译运行结果如下:
- 良好
- 你的等级是 C
case提供了switch表达式的入口地址,一旦switch表达式与某个case分支匹配,则从该分支的语句开始执行,一直执行下去,即其后的所有case分支的语句也会被执行,直到遇到break语句
- public static void main(String[] args) {
- String s = "a";
-
- switch (s) {
- case "a": //a分支
- System.out.println("匹配成功1");
-
- case "b": //b分支
- System.out.println("匹配成功2");
-
- case "c": //c分支
- System.out.println("匹配成功3");
- break;
- case "d": //d分支
- System.out.println("匹配成功4");
- break;
- default:
- break;
- }
- }
运行结果:
匹配成功1 匹配成功2 匹配成功3
switch成功匹配了a分支,但a、b分支都没有 break 语句,所以一直执行a分支后的所有语句,直到遇到c分支的break语句才终止。
switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
下面的方法结果会是什么呢?
- public static void test(){
- int i = 11;
- switch (i){
- case 5:case 11:case 12:
- System.out.println("是个5");
-
- case 10:
- System.out.println("是个10");
- break;
- case 4:
- System.out.println("是个4");
- break;
- default:
- System.out.println("默认值");
- break;
- }
- }
结果是:
- 是个5
- 是个10
下面的方法结果会是什么呢?
- public static void test(){
- int i = 10;
- switch (i){
- case 5:case 11:case 12:
- System.out.println("是个5");
-
- case 10:
- System.out.println("是个10");
- break;
- case 4:
- System.out.println("是个4");
- break;
- default:
- System.out.println("默认值");
- break;
- }
- }
-
结果是:
是个10
下面的方法结果会是什么呢?
- public static void test(){
- int i = 4;
- switch (i){
- case 5:
- System.out.println("是个5");
- break;
- case 10:
- System.out.println("是个10");
- break;
- case 4:
- System.out.println("是个4");
-
- default:
- System.out.println("默认值");
- break;
- }
- }
- 是个4
- 默认值
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。