选择语句


  • 选择语句 -- switch
  • 执行流程

  • case 的穿透性


选择语句 – switch

switch 语句格式:
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}

执行流程


  • 首先计算出表达式
  • 其次, 和 case 依次比较, 一旦有对应的值, 就会执行相应的语句, 在执行的过程中, 遇到 break 就会结束.
  • 最后, 如果所有的 case 都和表达式的值不匹配, 就会执行 default 语句体部分, 然后程序结束掉.
    Java基础 第一节 第十二课_switch语句

public static void main(String[] args) {
// 定义变量,判断是星期几
int weekday = 6;
// switch语句实现选择
switch (weekday) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的数字有误");
break;
}
}

switch 语句中, 表示式的数据类型, 可以是 byte, short, int, char, enum ( 枚举 ), JDK7 后可以接收字符串.

case 的穿透性

在 switch 语句中, 如果 case 后面不写 break, 将出现穿透现象, 也就是不会再判断下一个 case 的值, 直接向后运行, 直到遇到 break, 或者整体 switch 结束.

public class Test21 {
public static void main(String[] args) {
int i = 5;
switch (i){
case 0:
System.out.println("执行case0");
break;
case 5:
System.out.println("执行case5");
case 10:
System.out.println("执行case10");
default:
System.out.println("执行default");
}
}
}

上述程序中, 执行 case5 后, 由于没有 break 语句, 程序会一直向后走, 不会在判断 case, 也不会理会 break, 直接运行完整体 switch.

由于 case 存在穿透性, 因此初学者在编写 switch 语句时, 必须要马上写 break.