Java 13 新特性及实战案例
近期 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下载地址为 https://www.oracle.com/technetwork/java/javase/downloads/index.html。
以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版本。
编写 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>
更多Java示例,可见“现代Java案例大全”。
参考引用
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
实习生4面美团Java岗,已拿offer!(框架+多线程+集合+JVM)
美团技术一面 1、自我介绍说了很多遍了,很流畅捡重点介绍完。2、问我数据结构算法好不好挺好的(其实心还是有点虚,不过最近刷了很多题也只能壮着胆子充胖子了)3、找到单链表的三等分点,如果单链表是有环的呢用快慢指针,一个走一步,一个走三步。如果有环,先判断环在哪,找最后一个节点,然后用之前的无环的做法4、讲一下项目的架构我重点讲了MVC5、说一下你熟悉的设计模式我重点讲了单例、工厂方法、代理5、有没有配置过服务器啥啥啥这个我真不知道,都没听过呢,只能诚实说没有,毕竟都没法扯。一面挺匆忙的,我估计面试官刚开完会还没吃饭呢。他说让我等,可能再找一个同事面我,可能就直接告诉我结果了。从一面面试官的声音和口吻,我判断他一定是个部门老大,问的设计偏多,后面hr告诉我他就是我要去的部门的老大。哈哈。 美团技术二面 跟一面比起来,二面面试官的声音听起来就像是搞技术开发的,果不其然,一个小时的纯技术电话面试!面的特别全面!1、Spring:有没有用过Spring,Spring IOC、AOP机制与实现,Spring MVC其实我挺不想被问到Spring的细节的,框架这些我都没有复习不太记得了。所以我对面试...
- 下一篇
源码分析Mybatis插件(Plugin)机制与实战
源码分析Mybatis系列目录:1、源码分析Mybatis MapperProxy初始化之Mapper对象的扫描与构建2、源码分析Mybatis MappedStatement的创建流程3、Mybatis执行SQL的4大基础组件详解4、源码解析MyBatis Sharding-Jdbc SQL语句执行流程详解 有了《Mybatis执行SQL的4大基础组件详解》 与 《源码解析MyBatis Sharding-Jdbc SQL语句执行流程详解》两篇文章的铺垫,本文将直奔主题:Mybatis插件机制。 温馨提示:本文也是以提问式阅读与探究源码的技巧展示。 1、回顾 从前面的文章我们已经知道,Mybatis在执行SQL语句的扩展点为Executor、StatementHandler、ParameterHandler与ResultSetHandler,我们本节将以Executor为入口,向大家展示Mybatis插件的扩展机制。 我们先来看回顾一下Mybatis Executor的创建入口。 1.1 Configuration#newExecutor public Executor newExe...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器