switch语句及switch注意事项
switch语句
switch语法:
switch(表达式){
case 常量表达式1:
语句块1
break;
case 常量表达式2:
语句块2
break;
case 常量表达式3:
语句块3
break;
………………
default:
语句块n
break;
}
语义:先得出表达式的结果,根据结果跳转到相应的case语句块里面去执行
表达式结果 == 常量表达式 就叫相应的case语句块
如果case 后面的常量表达式没有一个跟表达式结果对应的
那么就跳转到 default里面执行语句块n
switch语句的穿透问题:
当case块里面不加break的时候,会发生穿透
穿透意思:就是从这个case块里面执行完语句后,会继续跳到下一个case块里面继续执行
所以,我们必须加break,防止穿透
break可以跳出当前的switch语句
穿透问题的技巧:可以利用穿透将同一结果的case放在一起,类似于if(表达式)中使用||。
例:
switch语法:
switch(表达式){
case 常量表达式1:
case 常量表达式2:
case 常量表达式3:
语句块1
break;
case 常量表达式4:
case 常量表达式5:
case 常量表达式6:
语句块2
break;
………………
default:
语句块n
break;
}
switch语句需要注意的地方:
1.switch语句后面的小括号只能写整数类型的表达式,否则会报错
2.case后面只能接常量表达式
3.case后面的常量表达式不能有重复的值
4.switch小括号后面不要加分号,可以加分号加在大括号后面
5.case后面不能立即声明变量,除非在声明前面加一条或者N条语句
6.非要在 case后面立即声明变量怎么办??那么就在case块里面加一个大括号
7.如果不加大括号声明的变量,其他case块也可以访问
8.default可以写在任意位置,不影响结果
if 语句与switch语句的互换:
任何可以用if语句实现的功能,绝对也可以用switch语句来实现,同样用switch语句可以做得东西,if也完全可以
如果要判断范围的话用if比较方便,用switch比较麻烦,不能直接用
如果是判断具体的某个值,并且值不是很多的时候用switch方便和简洁