1、定义
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
2、语法
switch case 语句语法格式如下:
switch(表达式){ case 常量 1: 语句; break; //可选 case 常量 2: 语句; break; //可选 ...... //你可以有任意数量的case语句 default: //可选 语句; break; }
-->switch、case、break、default是Java关键字
-->switch后的表达式可以是int、short、byte、char、枚举类型、从 JDK1.7开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
-->case用于与表达式进行匹配,switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
-->break用于终止后续语句的执行。
-->default是可选的,当其他条件都不匹配时执行default。
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。
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); } }
3、执行规律
1)计算switch后表达式的值。
2)将计算结果从上至下依次与case后的常量值比较。
3)如果相等就执行该常量后的代码块,遇到break语句就结束。
4)如果与任何一个case后的常量值都不匹配,就执行default中的语句。
注意事项:
1)如果case后没有break语句,程序将继续向下执行,直到遇到break语句或switch语句结束----“case穿透”。
public static void main(String[] args) { /* * 根据输入的月份来输出月份属于哪个季节 * * 12 1 2 冬季 * 3 4 5 春季 * 6 7 8 夏季 * 9 10 11 秋季 * */ Scanner sc = new Scanner(System.in); System.out.println("请输入月份(1-12):"); int month =sc.nextInt(); switch(month){ case 12: // System.out.println("冬季"); // break; case 1: // System.out.println("冬季"); // break; case 2: System.out.println("冬季"); //输入12,1月时,穿透进入case 2:中 break; case 3: // System.out.println("春季"); // break; case 4: // System.out.println("春季"); // break; case 5: System.out.println("春季"); //输入3,4月时,穿透进入case 5:中 break; case 6: // System.out.println("夏季"); // break; case 7: // System.out.println("夏季"); // break; case 8: System.out.println("夏季"); //输入6,7月时,穿透进入case 8:中 break; case 9: // System.out.println("秋季"); // break; case 10: // System.out.println("秋季"); // break; case 11: System.out.println("秋季"); //输入9,10月时,穿透进入case 11:中 break; } }
2)case常量值不能相同。
3)default语句可以在任意位置书写,但一般写在switch结构的末尾。也可以省略不写。
4、 switch与多重if异同点
相同点:
都是用来处理多分支条件的结构
不同点:
switch选择结构只能处理等值条件判断的情况
多重if选择结构既能处理某个变量处于某个连续区间时的情况,也能处理等值条件判断的情况