switch分支
String week="星期天";
switch (week){
case "星期一":
System.out.println("放假啦1");
break;
case "星期二":
System.out.println("放假啦2");
break;
case "星期三":
System.out.println("放假啦3");
break;
case "星期五":
System.out.println("放假啦5");
break;
case "星期天":
System.out.println("放假啦6");
break;
default:
System.out.println("出错了");
}
输出结果:
放假啦6
switch使用的注意事项
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long
- case给出的值不允许重复,切只能是字面量,不能是变量
- 不要忘记写break,否则会出现穿透现象
switch穿透性
- 如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会执行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。
//需求:用户输入月份可以展示该月份的天数
//1、3、5、7、8、10、12月份是31天
//2月份闰年为29天、非闰年为28天
//4、6、9、11月份是30天
int month=10;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month +"月是31天!");
break;
case 2:
System.out.println(month +"月份闰年为29天、非闰年为28天!");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month +"月是30天!");
break;
default:
System.out.println("出错了");
}
输出结果是:
10月是31天
1.什么情况下会出现穿透现象?
- case中没有写break
2.switch穿透性能解决什么问题?
- 存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码