#Java#Java 8 到 Java 14,改变了哪些你写代码的方式?( 二 )


本地变量类型推断在Java 10之前版本中 , 我们想定义定义局部变量时 。 我们需要在赋值的左侧提供显式类型 , 并在赋值的右边提供实现类型:
MyObject value = https://mparticle.uc.cn/api/new MyObject();

在Java 10中 , 提供了本地变量类型推断的功能 , 可以通过var声明变量:
var value = https://mparticle.uc.cn/api/new MyObject();

本地变量类型推断将引入“var”关键字 , 而不需要显式的规范变量的类型 。
其实 , 所谓的本地变量类型推断 , 也是Java 10提供给开发者的语法糖 。 虽然我们在代码中使用var进行了定义 , 但是对于虚拟机来说他是不认识这个var的 , 在java文件编译成class文件的过程中 , 会进行解糖 , 使用变量真正的类型来替代var
Switch 表达式在JDK 12中引入了Switch表达式作为预览特性 。 并在Java 13中修改了这个特性 , 引入了yield语句 , 用于返回值 。
而在之后的Java 14中 , 这一功能正式作为标准功能提供出来 。
在以前 , 我们想要在switch中返回内容 , 还是比较麻烦的 , 一般语法如下:
int i;

switch (x) {

   case \"1\":

       i=1;

       break;

   case \"2\":

       i=2;

       break;

   default:

       i = x.length();

       break;

在JDK13中使用以下语法:
int i = switch (x) {

   case \"1\" -> 1;

   case \"2\" -> 2;

   default -> {

       int len = args[1
.length();

       yield len;

   

;

或者
int i = switch (x) {

   case \"1\": yield 1;

   case \"2\": yield 2;

   default: {

       int len = args[1
.length();

       yield len;
   
;

在这之后 , switch中就多了一个关键字用于跳出switch块了 , 那就是yield , 他用于返回一个值 。 和return的区别在于:return会直接跳出当前循环或者方法 , 而yield只会跳出当前switch块 。
Text BlocksJava 13中提供了一个Text Blocks的预览特性 , 并且在Java 14中提供了第二个版本的预览 。
text block , 文本块 , 是一个多行字符串文字 , 它避免了对大多数转义序列的需要 , 以可预测的方式自动格式化字符串 , 并在需要时让开发人员控制格式 。
我们以前从外部copy一段文本串到Java中 , 会被自动转义 , 如有一段以下字符串:
<html>

 <body>

     <p>Hello world</p>

 </body>

</html>

将其复制到Java的字符串中 , 会展示成以下内容:
\"<html>\\" +

\"    <body>\\" +

\"        <p>Hello world</p>\\" +

\"    </body>\\" +

\"</html>\\";

即被自动进行了转义 , 这样的字符串看起来不是很直观 , 在JDK 13中 , 就可以使用以下语法了:
\"\"\"
<html>

 <body>