-
switch-case 是 多分支选择语句
从功能上讲,它和 if 语句是可以相互替换的,但是他们又各有各的特点:
当嵌套的 if 较少时(一般三个以内),使用 if 编写程序看着会比较简洁,但当嵌套的 if 语句太多时,会使代码冗长,可读性下降。故:当要嵌套的 if 语句过多时,可以使用 switch 语句来处理 -
switch 语句格式:
switch(表达式){
case 常量表达式1:
语句1
break; // 可选
case 常量表达式2:
语句2
break; // 可选
...
case 常量表达式n:
语句n
break; // 可选
default:
语句n+1
}
【注】
(1)switch 后面括号内的表达式必须是整数型,即可以是 int 型 或 char 型 的变量,也可以直接是 整数 或 字符常量;
(2)当 switch 后括号内的 表达式 值与某个 case 后 常量表达式 值相等时,就执行该 case 里的语句;
(3)若所有 case 中 常量表达式 的值与 switch 后括号内 表达式 的值都不相等,就执行 default 里的语句;
(4)每个 case 后面的 常量表达式的值 必须互不相同;
(5)各个 case 和 default 的出现次序不影响执行的结果;
(6)default 后面可以什么都不写,但是后面的 冒号 和 分号 不可以省略
(7)在执行 switch-case 结构时:如果遇到了break,就会跳出这个 switch-case;如果省略 break,就会往下一个 case 项穿透,直到遇到 break 或这个 switch-case 结束为止;
- 易错提醒:
public static int getValue(int i){
int result = 0;
switch (i){
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
当输入为 2 时,输出为10,而不是4
因为 case 后面没有 break,执行完 case 2:里的语句后会继续执行下面的 case 语句