Switch语句的case穿透
一 switch语句几点说明:
1. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的.
2.case后面表达式可以接受:
基本数据类型,byte,short,char,int.换句话说能自动类型自动提升为int的都可以接受;
引用数据类型可以接受枚举(JDK1.5),String字符串(JDK1.7)
3.default不是一定要放到最后,放到中间也不会先执行它,首先匹配case,匹配不到case才会执行default,
可以在任意位置。但是建议在最后。(default最后执行)
4.switch语句的结束条件
遇到break就结束了
执行到switch的右大括号就结束了
二 举例说明
例1:看程序写结果:
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
break;
case 5:
y++;
}
System.out.println("y = " + y);
解答过程
x值先和case按顺序依次匹配,x=2没匹配的case,最后走了default:y++(y自增1),然后没有
遇到break或右大括号,不跳出switch语句,继续向下执行,遇到下面的case相当于不再进行判断了,
遇到break或右大括号就跳出switch语句
结果是:y = 6
例2代码练习
用switch语句键盘录入月份,输出对应的季节
import java.util.Scanner;
class sw23 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
int month = sc.nextInt(); //将键盘录入结果存储在month
switch (month) {
case 3:
case 4:
case 5:
System.out.println(month + "月是春季");
break;
case 6:
case 7:
case 8:
System.out.println(month + "月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month + "月是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month + "月是冬季");
break;
default:
System.out.println("对不起没有对应的季节");
break;//可加可不加
}
}
}