Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化

发布时间:2020-05-31 23:05:57 作者:wx5d30212829a35
来源:网络 阅读:283

距离 2019 年结束,只剩下 35 天了。你做好准备迎接 2020 年了吗?

一到年底,人就特别容易陷入回忆和比较之中,比如说这几天的对比挑战就火了!

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


这个话题登上了微博的热搜榜,也刷爆了朋友圈,人们纷纷晒出自己2017和2019的照片对比。

作为一个技术宅,我也做了一个对比:

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


2017 年 9 月 21 日,Java 9 正式发布,并且在2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布。

历任JDK对比

1、Java 9

Java 9 于 2017 年 9 月 22 日正式发布,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


主要特性:

2、Java 10

Java 10于 2018 年3 月21 日正式发布,这是作为当今使用最广泛的编程语言之一的Java 语言的第十个大版本。

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


主要特性:

3、Java 11

Java 11 于 2018 年9 月25 日正式发布,可在生产环境中使用!这是自 Java 8 后的首个长期支持版本,将支持到2026年。

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


主要特性:

4、Java 12

Java 12于 2019 年3 月 19 日正式发布,自Java 11 这一Long Term Support 版本发布之后半年的又一次版本更新

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


主要特性:

5、Java 13

Java 13 于 2019 年 9 月 17 日正式发布,这一版本中引入了文本块等功能。

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


主要特性:

哪些特性改变你写代码的方式?

1、本地变量类型推断

在以前的版本中,我们想定义定义局部变量时。我们需要在赋值的左侧提供显式类型,并在赋值的右边提供实现类型,如下面的片段所示:

MyObject value = new MyObject();
List list = new ArrayList();

在Java 10中,你可以这样定义对象:

var value = new MyObject();
var list = new ArrayList();

正如你所看到的,本地变量类型推断将引入“var”关键字,而不需要显式的规范变量的类型。

2、switch表达式

在JDK 12中引入了Switch表达式作为预览特性。在Java 13中又修改了这个特性,引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使用yield, switch语句(不返回值)应该使用break。

在以前,我们想要在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;
 }
};

3、文本块支持

text block,文本块,是一个多行字符串文字,它避免了对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

我们以前从外部copy一段文本串到Java中,会被自动转义,如有一段以下字符串:

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

将其复制到Java的字符串中,会展示成以下内容:

"<html>\n" +
" <body>\n" +
" <p>Hello, world</p>\n" +
" </body>\n" +
"</html>\n";

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

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

使用“”“作为文本块的开始符合结束符,在其中就可以放置多行的字符串,不需要进行任何转义。看起来就十分清爽了。

后话

从2017到2019,不果短短两年时间,Java就发布了5个版本。每个版本都会有很多特性出来,这些特性中虽然没有像Java 8那样提供函数式编程这样的重大改变,但是也提供了switch表达式和block text等大家期待已久的特性。

2年过去了,在Java学习的道路上,你进步了吗?欢迎谈谈你这两年的变化。


读者福利

加微信:haolagui521备注51CTO领取附送学习进阶架构资料、PDF书籍文档、面试资料

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化

Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化


推荐阅读:
  1. Java8,java9和java11新增了哪些特性
  2. java9学习系列之在docker中如何运行java9

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java 两年 看看

上一篇:精准测试与自动化测试的无缝对接

下一篇: CSS3 3D导航切换代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》