zoukankan      html  css  js  c++  java
  • Java12新特性 -- switch表达式

    传统switch表达式的弊端:

    • 匹配是自上而下的,如果忘记写break, 后面的case语句不论匹配与否都会执行;
    • 所有的case语句共用一个块范围,在不同的case语句定义的变量名不能重复;
    • 不能在一个case里写多个执行结果一致的条件;
    • 整个switch不能作为表达式返回值;

    java 12 switch新特性:

    • 使用 Java 12 中 Switch 表达式的写法,省去了 break 语句,避免了因少写 break 而出错。
    • 同时将多个 case 合并到一行,显得简洁、清晰也更加优雅的表达逻辑分支,其具体写法就是将之前的 case 语句表成了:case L ->,即如果条件匹配 case L,则执行标签右侧的代码 ,同时标签右侧的代码段只能是表达式、代码块或 throw 语句。
    • 为了保持兼容性,case 条件语句中依然可以使用字符 : ,这时 fall-through 规则依然有效的,即不能省略原有
      的 break 语句,但是同一个 Switch 结构里不能混用 -> 和 : ,否则会有编译错误。并且简化后的 Switch 代码块中定义的局部变量,其作用域就限制在代码块中,而不是蔓延到整个 Switch 结构,也不用根据不同的判断条件来给变量赋值。
    public class SwitchTest1 {
        public static void main(String[] args) {
                Week day = Week.FRIDAY;
                switch (day) {
                case MONDAY,FRIDAY, SUNDAY -> System.out.println(6);
                case TUESDAY -> System.out.println(7);
                case THURSDAY, SATURDAY -> System.out.println(8);
                case WEDNESDAY -> System.out.println(9);
                default -> throw new IllegalStateException("What day is today?" + day);
                }
            }
    }
    
    
    public class SwitchTest2 {
        public static void main(String[] args) {
                Week day = Week.FRIDAY;
                int numLetters = switch (day) {
                    case MONDAY, FRIDAY, SUNDAY -> 6;
                    case TUESDAY -> 7;
                    case THURSDAY, SATURDAY -> 8;
                    case WEDNESDAY -> 9;
                    default -> throw new IllegalStateException("What day is today?" + day);
                };
            }
    }
    
  • 相关阅读:
    do...while(0)的妙用
    2013-07-23工作记录
    2013-07-22工作记录
    完全零基础入门——第二天
    【转】学习Flex ActionScript 3.0 强烈推荐电子书
    完全零基础入门——第一天
    【转】待整理
    【luogu P7599】雨林跳跃
    【ybt金牌导航5-4-4】【luogu P4842】城市旅行
    【ybt金牌导航5-4-3】【luogu P2387】魔法森林
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/11704897.html
Copyright © 2011-2022 走看看