zoukankan      html  css  js  c++  java
  • Java13 闪亮来袭,你是否还停留在 Java8

    近期 Java 界好消息频传。先是 Java 13 发布,接着 Eclipse 也发布了新版本表示支持新版本的 Java 特性。
    本文介绍了 Java 13 的新特性并展示了相关的示例。

    2019 年 9 月 17 日,Java 13 正式发布。特性如下。

    Java 13 新特性

    此版本带来了以下几大新特性:

    • JEP 350,Dynamic CDS Archives:扩展应用程序类 - 数据共享,以允许在 Java 应用程序执行结束时动态归档类。归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的所有已加载的应用程序类和库类。
    • JEP 351,ZGC: Uncommit Unused Memory:增强 ZGC 以将未使用的堆内存返回给操作系统。
    • JEP 353,Reimplement the Legacy Socket API:使用易于维护和调试的更简单、更现代的实现替换 java.net.Socket 和 java.net.ServerSocket API 使用的底层实现。
    • JEP 354,Switch Expressions (Preview):可在生产环境中使用的 switch 表达式,JDK 13 中将带来一个 beta 版本实现。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的 “case L ->” 模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。
    • JEP 355,Text Blocks (Preview):将文本块添加到 Java 语言。文本块是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

    安装 JDK 13

    JDK 13 下载地址为 。

    以 Windows 环境为例,可通过 jdk-13_windows-x64_bin.exe 或 jdk-13_windows-x64_bin.zip 来进行安装。 .exe 文件的安装方式较为简单,按照界面提示点击 “下一步” 即可。

    下面演示. zip 安装方式。

    1. 解压. zip 文件到指定位置

    将 jdk-13_windows-x64_bin.zip 文件解压到指定的目录下即可。比如,本例子放置在了D:Program Filesjdk-13位置。

    2. 设置环境变量

    创建系统变量 “JAVA_HOME”,其值指向了 JDK 的安装目录。

    在用户变量 “Path” 中,增加“%JAVA_HOME%in”。

    注:JDK13 已经无需再安装 JRE,设置环境变量时也不用设置 CLASSPATH 了。

    3. 验证安装

    执行 “java -version” 命令进行安装的验证:

    $ java -version
    java version "13" 2019-09-17
    Java(TM) SE Runtime Environment (build 13+33)
    Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)
    
    

    如果显示上述信息,则说明 JDK 已经安装完成。

    如果显示的内容还是安装前的老 JDK 版本,则可按照如下步骤解决。

    首先,卸载老版本的 JDK

    其次,在命令行输入如下指令来设置 JAVA_HOM 和 Path:

    >SET JAVA_HOME=D:Program Filesjdk-13
    
    >SET Path=%JAVA_HOME%in
    
    

    Eclipse IDE 2019-09

    在 Java 13 发布两天后的 2019 年 9 月 19 日,Eclipse IDE 2019-09 发布。Eclipse IDE 2019-09 声称支持 Java 13。接下里将演示如何使用 Eclipse IDE 2019-09 编写 Java 13 的示例。

    Eclipse IDE 2019-09 下载地址为 https://www.eclipse.org/downloads/packages/。本例使用的是 Eclipse 4.14 版本。

    编写 Java 13 示例

    实战 1:Switch 表达式的例子

    下面是原有的 Switch 表达式的写法:

    switch (day) {
        case MONDAY:
        case FRIDAY:
        case SUNDAY:
            System.out.println(6);
            break;
        case TUESDAY:
            System.out.println(7);
            break;
        case THURSDAY:
        case SATURDAY:
            System.out.println(8);
            break;
        case WEDNESDAY:
            System.out.println(9);
            break;
    }
    
    

    在 Java 12 中,Switch 表达式可以改为如下写法:

    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);
    }
    
    

    还能支持在表达式中返回值:

    int numLetters = switch (day) {
        case MONDAY, FRIDAY, SUNDAY -> 6;
        case TUESDAY                -> 7;
        case THURSDAY, SATURDAY     -> 8;
        case WEDNESDAY              -> 9;
    };
    
    

    在 Java 13 中,Switch 表达式可以改为如下写法:

    int date = switch (day) {
    	case MONDAY, FRIDAY, SUNDAY : yield 6;
    	case TUESDAY                : yield 7;
    	case THURSDAY, SATURDAY     : yield 8;
    	case WEDNESDAY              : yield 9;
    	default 					: yield 1; // default条件是必须的
    };
    
    System.out.println(date);
    
    

    需要注意的是,在使用 yield 时,必须要有 default 条件。

    实战 2:文本块

    自 Java 13 开始,支持文本块(Text Blocks)。

    以下是 Java 13 之前的文本块的处理方式的示例:

    String html = "<html>
    " +
    	              "    <body>
    " +
    	              "        <p>Hello, world</p>
    " +
    	              "    </body>
    " +
    	              "</html>
    ";
    
    System.out.println(html);
    
    

    在上述示例中,由于文本块需要换行,所以产生了很多本文的拼接和转义。

    以下是 Java 13 中的文本块示例:

    String html2 = """
    	              <html>
    	                  <body>
    	                      <p>Hello, world</p>
    	                  </body>
    	              </html>
    	              """;
    	    
    System.out.println(html2);
    
    

    在上述示例中,对于文本块的处理变得简洁、自然。

    以上两个示例在控制台输出内容都是一样的,效果如下:

    <html>
        <body>
            <p>Hello, world</p>
        </body>
    </html>
    
    

    “不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

    关注公众号:「Java 知己」,每天更新Java知识哦,期待你的到来!

    • 发送「Group」,与 10 万程序员一起进步。
    • 发送「面试」,领取BATJ面试资料、面试视频攻略。
    • 发送「玩转算法」,领取《玩转算法》系列视频教程。
    • 千万不要发送「1024」...

  • 相关阅读:
    2018
    线程的五大状态
    SQL 列转行与行转列
    python中元组(tuple)的拆包unkacping
    python字典的相关操作总结
    C语言使用typedef进行类型重定义
    C++中namespace的用法理解
    ping: unknown host 解决办法
    go环境变量配置liteide配置
    svn出现Authorization failed
  • 原文地址:https://www.cnblogs.com/java-friend/p/11576726.html
Copyright © 2011-2022 走看看