首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JDK14版本开始支持的switch表达式

switch表达式

耿祥义视讲解

2020-12-20

1.  switch表达式的动机

   传统的switch语句里通过使用break控制分支的执行,许多break语句使switch语句变得不必要地冗长。另外,一旦丢失break,意味着分支失控。

2. switch表达式的格式

switch(开关值){

     case 常量值  -> 表达式 ;

     case 常量值  -> 表达式 ;

     ... ...

     default   -> 表达式

}

各个case表达式要么都有值,要么都没有值。

如果各个case表达式都有值,就必须有default(否则可以省略)。

开关值的类型可以是byte, short,char,int ,String,enum(不可以是long)

★switch表达式的值

●如果开关值等于case的常量值,switch表达式的值就是该case给出的表达式的值。如果开关值不和任何case匹配,switch表达式的值就是default给出的表达式的值。

●如果表达式都是无值表达式,switch表达式也是无值表达式。

3. 扩展

switch(开关值){

      case 一组用逗号分隔的常量值  -> 表达式 ;

      case 一组用逗号分隔的常量值  -> 表达式 ;

     ... ...

      default   -> 表达式

}

●如果开关值等于case给出的某个常量值,switch表达式的值就是该case给出的表达式的值。如果开关值不和任何case匹配,switch表达式的值就是default给出的表达式的值。

●如果表达式都是无值表达式,switch表达式也是无值表达式。

4.例子

(1)

public class E {

  public static void main(String args[]) {

       int m =5,n =10;

       char c = '+';

       double result  = 0;

       result= switch (c) {

         case '+' -> m+n ;

         case '-'  -> m-n;

         case '*'  -> m*n;

         case '/'  -> m/n;

         default  ->  Double.NaN;

       } ;

  }

}

(2)

public class E2 {

  public static void main(String args[]) {

         int month = 2;

         byte result = switch (month) {

         case 1,3,5,7,8,10,12  -> 31;

         case 4,6,9,11             -> 30;

         case 2                       -> 28;

         default                      -> -1;

       };

  }

}

(3)

public class E3 {

  public static void main(String args[]) {

       byte m =5;

       switch (m) {

      }

  }

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201220A0CF6200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券