您的位置:

Java Switch语句和默认情况

Java Switch语句是流控制语句之一,它让程序有能力根据一个或多个选项执行不同的代码块。默认情况是在所有选项都无法匹配时所执行的代码块。Switch语句可以让程序执行多个路线中的一条,这些路线被称为case。Switch语句可以在多个case中使用默认情况。

一、Switch语句的基本用法

Switch语句是根据变量或表达式的值执行不同的代码块。Switch语句包含一个switch关键字,后跟括号()中的变量或表达式。跟在这个括号后面是一系列的case语句,每一个case后面是一个或多个语句需要执行。在所有的case语句都执行完成后,程序继续往下执行剩下的代码。

switch(expression) {
    case value1:
        // 在expression与value1匹配时执行的代码
        break; // 可选的
    case value2:
        // 在expression与value2匹配时执行的代码
        break; // 可选的
    // 你可以在这里添加更多的case语句
    default: 
        // 默认情况下要执行的代码
}

在上面的代码中,expression是需要检查的变量或表达式。如果expression的值与value1匹配,那么程序将跳转到value1的代码块中执行,以此类推。如果没有一个匹配的值,程序将执行默认情况下的代码块。

二、Switch语句的逻辑行为

在上面的代码示例中,每个case语句后面跟着一个break语句。这个break语句可以让程序跳出整个switch语句块,如果没有break语句,程序将继续执行下一组case语句的代码,这种情况被称为fall-through。下面的例子展示了fall-through:

int day = 4;
switch (day) {
    case 1:
        System.out.println("星期一");
    case 2:
        System.out.println("星期二");
    case 3:
        System.out.println("星期三");
    case 4:
        System.out.println("星期四");
    case 5:
        System.out.println("星期五");
    case 6:
        System.out.println("星期六");
    case 7:
        System.out.println("星期日");
}

当上面的代码运行时,输出是:

星期四
星期五
星期六
星期日

这是因为程序匹配了case 4,它跳过了break语句,然后运行了所有case之后的语句,这就是fall-through。

三、默认情况

当switch语句中所有的case语句都不能与expression匹配时,程序将代码块跳转到default语句。default语句是可选的,但是通常用于处理不是很常见的情况,或者作为错误处理的最后一个手段。

int day = 10;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    default:
        System.out.println("未知的天数");
}

在上面的代码示例中,当day的值为10时,程序输出“未知的天数”。

四、Switch语句的使用技巧

Switch语句可以用于很多不同的任务。下面是一些技巧,可以用于更加高效地使用Switch语句。

1. 字符串

在Java 7中,Switch语句通过字符串进行匹配。下面是一个简单的例子:

String s = "red";
switch (s) {
    case "red":
        System.out.println("红色");
        break;
    case "green":
        System.out.println("绿色");
        break;
    case "blue":
        System.out.println("蓝色");
        break;
}

上面的代码中,Switch语句使用字符串进行匹配,输出结果为“红色”。

2. 枚举

Switch语句可以用于枚举类型变量的匹配。下面是一个例子:

enum Day {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
Day day = Day.Monday;
switch (day) {
  case Monday:
     System.out.println("星期一");
     break;
  case Tuesday:
     System.out.println("星期二");
     break;
  case Wednesday:
     System.out.println("星期三");
     break;
  case Thursday:
     System.out.println("星期四");
     break;
  case Friday:
     System.out.println("星期五");
     break;
  case Saturday:
     System.out.println("星期六");
     break;
  case Sunday:
     System.out.println("星期日");
     break;
}

上面的代码中,Switch语句用来匹配枚举类型变量Day。

3. 范围匹配

Java 7中,Switch语句支持范围匹配。下面是一个例子:

int score = 60;
switch (score) {
    case 90-100:
        System.out.println("A");
        break;
    case 80-89:
        System.out.println("B");
        break;
    case 70-79:
        System.out.println("C");
        break;
    case 60-69:
        System.out.println("D");
        break;
    default:
        System.out.println("E");
}

在上面的范围匹配示例中,当score的值为60时,程序输出“D”。

五、总结

Switch语句是使用多种类型匹配多个情况的一种流控制语句。通常,Switch语句可以使代码更清晰,易于维护,并减少代码量。在使用Switch语句时,需要记住一些技巧,例如为每个case添加break,避免fall-through,还可以通过使用字符串、枚举类型、范围匹配提高程序的效率。