📜  Java中的switch语句(1)

📅  最后修改于: 2023-12-03 15:31:57.504000             🧑  作者: Mango

Java中的switch语句

在Java中,switch语句作为一种流程控制语句,能够替代多个if-else语句。它将一个表达式与多个常量值作比较,每个常量值称作一个case,并且根据表达式的值执行相应的代码块。

常见用法
switch(expression) {
   case value1 :
      // 代码块1
      break;
   case value2 :
      // 代码块2
      break;
   case value3 :
      // 代码块3
      break;
   // You can have any number of case statements.
   default : // 可选
      // 代码块4
}

在上面的代码片段中,expression为要比较的表达式,它的数据类型可以是int、byte、short、char等整数类型,以及枚举类型和字符串类型;value1、value2、value3是与表达式进行比较的常量值;default:是可选的,它表示如果表达式的值与所有的常量值都不匹配,那么就执行default后面的代码块。

switch语句的匹配规则

switch语句的匹配规则是:如果expression的值与某个case后面的常量值相等,那么就执行该case后面的代码块,并且在执行完代码块之后跳出switch语句;如果不相等,则继续与下一个case进行匹配,如果都不匹配,则执行default后面的代码块。

流程图如下:

switch流程图

注意事项
  • 每个case块的代码执行后,都应该使用break语句来跳出switch语句。如果没有break语句,将会执行后面的case或default代码块。可以通过在每个case块最后添加break语句来解决如下问题:
switch (expression) {
    case value1:
        // TODO 做些事情
    case value2:
        // TODO 做些事情
    case value3:
        // TODO 做些事情
    default:
        // TODO 做些事情
}

如果expression的值为value1,则执行TODO1、TODO2、TODO3、TODO4代码块;如果expression的值为value2,则执行TODO2、TODO3、TODO4代码块;如果expression的值为value3,则执行TODO3、TODO4代码块;如果expression的值与所有的case匹配不上,则执行default后面的代码块。

  • default块是可选的,而且它的位置是灵活的。可以在switch语句的任何位置添加default块,它的作用是处理所有未匹配的值。
代码片段
int day = 3;
String dayName;
switch (day) {
    case 1:
        dayName = "星期一";
        break;
    case 2:
        dayName = "星期二";
        break;
    case 3:
        dayName = "星期三";
        break;
    case 4:
        dayName = "星期四";
        break;
    case 5:
        dayName = "星期五";
        break;
    case 6:
        dayName = "星期六";
        break;
    case 7:
        dayName = "星期日";
        break;
    default:
        dayName = "无效日期";
}
System.out.println(dayName);

上述代码会输出:星期三。因为day的值为3,所以匹配case 3,并执行case 3下面的代码块,赋值dayName为“星期三”。