Java switch case语句(十一)
Switch case语句
if-else语句可以用来描述一个“二岔路口”,我们只能选择其中一条路来继续走,然而生活中经常会碰到“多岔路口”的情况。switch语句提供了 if 语句的一个变通形式,可以从多个语句块中选择其中的一个执行。
例如:根据考试的名次,给予前 4 名不同的奖品。第一名,奖励一台笔记本;第二名,奖励一个Ipad;第三名,奖励一个移动电源;最后一名奖励一个U盘。
语法格式:
switch(表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
…
case 值n:
语句块n;
break;
default:
语句块n+1;
break;
}
其中,switch、case、default、break都是Java的关键字。
- switch表示“开关”,这个开关就是switch关键字后面小括号里表达式的值,小括号里要放一个整型变量或字符型变量。表达式必须为byte,short,int,char类型。
- case后面的值可以是常量数值,如:1、2;也可以是一个常量表达式,如:2+2;但不能是变量或带有变量的表达式,如:a * 2。
- case匹配后,执行匹配块里的程序代码,如果没有遇见break会继续执行下一个的case块的内容,直到遇到break语句或者switch语句块结束。
- default块可以出现在任意位置,但通常放在末尾,也可以省略不写。
- 如果在 case 分支语句的末尾没有 break 语句,有可能触发多个 case 分支。那么就会接着执行下一个 case 分支语句。这种情况相当危险,常常会引发错误。
因此,在编译代码时可以考虑加上 -Xlint:fallthrough 选项:javac -Xlint:fallthrough Test.java
这样,如果某个分支最后缺少一个 break 语句,编译器就会给出一个警告消息。
注意:重复的 case 值是不允许的。
运行流程如图:
当switch后表达式的值和case语句后的值相同时,从该位置开始向下执行,直到遇到break语句或者switch语句块结束;
如果没有匹配的case语句则执行default块的代码;
当然,default语句是可选的。如果没有相匹配的case语句,也没有default语句,则什么也不执行。
例如:
运行结果:
case匹配后,执行匹配块里的程序代码,如果没有遇见break会继续执行下一个case块的内容,直到遇到break语句或者switch语句块结束。如:
运行结果:
可以把功能相同的case语句合并起来。如:
运行结果:
运行结果:
嵌套Switch语句
可以将一个switch语句作为一个外部switch语句的语句序列的一部分,这称为嵌套switch语句。因为一个switch语句定义了自己的块,外部switch语句和内部switch语句的case常量不会产生冲突。例如:
运行结果: