switch-case表达式

  1. demo1
  2. demo2
  3. demo3

从Java 12开始,switch-case语句升级为更简洁的表达式语法,使用类似模式匹配的方法保证只有一种路径会被执行,并且不需要break语句。
新语法使用 ->,如果有多条语句,需要用 {} 括起来。不要写 break 语句,因为新语法只会执行匹配到的单条语句或匹配到的 {} 块里的语句。
switch-case的使用脱离不开下面两种场景,我们用两个demo进行演示。

demo1

下面程序输出 “最喜欢的水果就是芒果,也就是mango”。

public static void main(String[] args) {
    String fruit = "mango";
    switch (fruit) {
        case "apple" -> System.out.println("苹果");
        case "pear" -> System.out.println("梨");
        case "mango" -> {
            fruit = "最喜欢的水果就是芒果,也就是"+fruit;
            System.out.println(fruit);
        }
        default -> System.out.println("今天没有水果吃");
    }
}

demo2

我们还可能用switch语句给某个变量赋值,如下程序输出 “price = 16”。

public static void main(String[] args) {
    String fruit = "mango";
    int price = switch (fruit) {
        case "apple" -> 10;
        case "pear", "mango" -> 16;
        default -> 0;
        }; // 注意赋值语句要以;结束
        System.out.println("price = " + price);
    }

demo3

switch与enum是黄金搭档,使用switch语句的时候更适合传入enum参数,而不是int参数或String参数。

enum Weekday {
    SUN, MON, TUE, WED, THU, FRI, SAT;
}

public class Hello {
    public static void main(String[] args) {
        Weekday day = Weekday.SUN;
        switch(day) {
            case MON,TUE,WED,THU,FRI -> System.out.println("Today is " + day + ". Work at office!");
            case SAT,SUN -> System.out.println("Today is " + day + ". Work at home!");
            default-> throw new RuntimeException("cannot process " + day);
        }
    }
}

他の者にできたか?ここまでやれたか?この先できるか?いいや、仆にしかできない!

目录
×

喜欢就点赞,疼爱就打赏