switch case分支结构
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
- 执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后结束程序。
代码演示
public class DemoSwitch {
public static void main(String[] args) {
int num = 10;
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("数据不合理");
break; // 最后一个break语句可以省略,但是强烈推荐不要省略
}
}
}
switch语句中,表达式的数据类型,可以是byte、short、int、char、enum(枚举),JDK7后可以接收String。
case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
代码演示
public class Demo08SwitchNotice {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("你好");
break;
case 2:
System.out.println("我好");
// break;
case 3:
System.out.println("大家好");
break;
default:
System.out.println("他好,我也好。");
break;
} // switch
}
}
switch - case使用注意事项
1.在switch - case结构中,有且只能执行case,或者default之后的语句。如果存在在case和default之外的语句,是无法执行的,对于Java而言是无效代码。
2. 多个case后面的数值不可以重复。
3. switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
4. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
5.在switch - case结构中,default可以省略,代码编译不会受到影响,没有语法错误。但是失去switch - case自带的一种异常情况处理方式。
AJGG阿里巴巴Java开发规范中,是不推荐省略default。
总结
1.switch case结构和 if else if 结构类似,两者是可以互通的。
2.if else if结构中可以处理范围性数据,处理的数据区间更广泛
3.switch case处理数据明确性更强,处理针对性选择比较合适。