专栏首页Java知己Java13 闪亮来袭,你是否还停留在 Java8

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 Files\jdk-13位置。

2. 设置环境变量

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

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

注: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 Files\jdk-13

>SET Path=%JAVA_HOME%\bin

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 版本。

正是金九银十跳槽季,为大家收集了2019年最新的面试资料,有文档、有攻略、有视频。有需要的同学可以在公众号【Java知己】,发送【面试】领取最新面试资料攻略!暗号【1024】千万不要发,否则.....

编写 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>\n" +
	              "    <body>\n" +
	              "        <p>Hello, world</p>\n" +
	              "    </body>\n" +
	              "</html>\n";

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>

你的赞和关注是我继续创作的动力~

原文链接:https://blog.csdn.net/feilang00/article/details/101267244

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [android] 采用服务录制电话&服务的生命周期

    调用MediaRecorder对象的setAudioSource()方法,设置音频源,

    陶士涵
  • Java字节码增强探秘

    大家好,美美今天给大家推荐一篇Java字节码增强技术的文章,在实际工作中有很多应用场景。

    数据猿
  • 讲真,下次打死我也不敢随便改serialVersionUID了

    序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。类通过实现 java.io.Serializable 接口以启用其序列化功能。

    黄泽杰
  • [android] 采用断点调试的方式观察pull解析的流程

    当程序出现错误的时候,界面出不来,这个时候就需要调试技巧,描述这个程序在哪个地方出现的问题。在你认为可能出错的代码部分,左侧的行号栏点击打断点,在项目目录右键 ...

    陶士涵
  • [android] androidPN开源项目介绍

    找到server的代码,开启服务,双击 bin/run.bat ,服务启动后监听127.0.0.1:7070端口

    陶士涵
  • 美团超详细面经(附答案)

    Java3y
  • 基于java的直线型接口测试框架初探

    在使用java语言作为接口测试的过程中,发现java语言的简洁性的确不如脚本语言,如python,很多功能python一行代码几个方法就能搞定,java需要几行...

    八音弦
  • python用递归筛选法求N以内的孪生质数(孪生素数)

    本人最近读完一本书《质数的孤独》,里面讲到孪生质数,就想查一下孪生质数的分布情况。其中主要用到了计算质数(素数)的方法,搜了一下,排名前几的都是用for循环来做...

    八音弦
  • [android] 常用数据适配器SimpleAdapter

    当我们的列表包含图片和文字信息时,ArrayAdapter就无法实现了,使用SimpleAdapter,activity中findViewById()获取到Li...

    陶士涵
  • [android] smartimageview&常见的开源代码

    github上搜索开源框架android-smarty-imageview,下载压缩包,拷贝我们之前写的网络图片查看器布局。

    陶士涵

扫码关注云+社区

领取腾讯云代金券