您当前位置:资讯中心 >开发 >浏览文章

JDK17 与 JDK11 特性差异浅谈

来源:不详 日期:2024/1/26 8:33:14 阅读量:(0)

1.1 switch 表达式语法变化

  1. 在 JDK12 之前如果 switch 忘记写 break 将导致贯穿,在 JDK12 中对 switch 的这一贯穿性做了改进。你只要将 case 后面的冒号改成箭头,那么你即使不写break也不会贯穿了。
  2. switch 可作为表达式,不再是单独的语句。
  3. 当你把 switch 中的 case 后的冒号改为箭头之后,此时 switch 就不会贯穿了,但在某些情况下,程序本来就希望贯穿比如我就希望两个 case 共用一个执行体。JDK12 的 switch 中的 case 也支持多值匹配,这样程序就变得更加简洁了。
  4. JDK13 引入了一个新的 yield 语句来产生一个值,该值成为封闭的 switch 表达式的值。yield 和 return 的主要区别在于它们如何控制程序的流程。return 会结束当前的方法或函数,并将控制权返回给调用者。而 yield 则会暂时离开当前的 switch 表达式,将一个值返回给调用者,然后再回到 switch 表达式的地方继续执行。
public class Demo{
  public static void main(String[] args){
    var score = 'C';
    // 执行switch分支语句
    String s = switch (score){
      case 'A', 'B' -> "上等";
      case 'C' -> "中等";
      case 'D', 'E' -> "下等"; 
      default -> {
        if (score > 100) {
          yield "数据不能超过100";
        } else {
          yield score + "此分数低于0分";
        }
      }
    } 
  }
}
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。