跳转至

Switch多重选择

本章评级

欸,你想,如果我想要有很多的选择,用if语句是不是太麻烦了?没错,所以我们今天就来学习switch语句

一个基本的Switch语句长这样

switch(表达式){
    case  :
       代码块
       break; //中断(可选)
    case  :
       代码块
       break; //中断(可选)
    //case语句的数量理论上是无限的
    default : //默认(可选)
       代码块
}
Switch语句通过switch(表达式)的结果,跳转到与表达式之匹配的case上执行,再 通过判断有无break来决定是否结束执行。

举个栗子

我们来看一个简单的栗子

public class Tea {
    public static void main(String[] args) {
        int clock = 2;
        switch (clock) {
        case 2:
            System.out.println("1点钟,是时候睡觉了(¦3[▓▓]");
            break;
        case 3:
            System.out.println("三点钟了,饮茶先啦");
            break;
        case 4:
            System.out.println("四点钟了,是时候吃两面包夹芝士");
            break;

        default:

        System.out.println("这什么乱七八糟的");
        break;
        }
    }
}

修改高亮语句的数字为234114514后依次观察,可以发现,如果clock的值不符合任何一个case,那么就会执行default内的代码块。

switch语句具有穿透性

使用switch()语句时,一定注意不要漏写break,否则switch()语句将会在找到表达式对应的case后直接无视表达式的值,向下执行所有case内的代码块。

case语句可以使用字符串进行匹配。

在Java12中的case

在Java12中,由于不写break;将会带来严重的逻辑错误且不易被发现,故case多了一种形式:表达式形式。

长这样:

public class Main {
public static void main(String[] args) {
    String fruit = "apple";
    switch (fruit) {
    case "apple" -> System.out.println("选择 apple");
    case "pear" -> System.out.println("选择 pear");
    case "mango" -> {
        System.out.println("选择 mango");
    }
    default -> System.out.println("欸,还没选呢,就是玩");
        }
    }
}
可以发现,使用表达式形式的switchcase指定方式由:变成了->且执行多个语句时,需要增加花括号{}

这个栗子同时也展示了switch语句能够对字符串进行判断。


最后更新: 2021-08-06