美文网首页Java 杂谈
程序员们,再不升级 Java 10 就晚了!

程序员们,再不升级 Java 10 就晚了!

作者: java高级编程中心 | 来源:发表于2019-02-18 22:59 被阅读10次

正如我们大家都知道的,Java 的最新版本已经来到了10。本文将重点介绍当前正在开发的一些有趣的 Java 新功能。

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

Oracle 官方宣称在每年的三月和九月将分别发布两次 Java 的新版本。这意味着 Java 11 将在五个月内面世。得益于如此频繁的发布速度,只要有新功能便会立即加入到新版的 Java 中,这样一来开发者就可以很快享有 Java 的新功能,而不必再像以前那样等待多年。Java 10的发布相比于 Java 9 只有短短的六个月,然而我们在 Java 10中看到了大量的新功能。对于即将发布的 Java 11,我们同样期待能够有更多的新功能加入。

如今,这些新功能能够快速在 Java 新版本中发布,那么这些新功能到底有哪些?本文将重点介绍当前正在开发和提及的一些有趣的 Java 新功能。

局部变量类型推断

Java 10 引入了局部变量类型推断的特性。该特性使用var关键字来定义局部变量,并让编译器根据初始化的方式来确定变量类型。如果你使用过 Java 的 lambda 表达式,那么这个特性对你来说并不会太陌生。实际上,你可能已经将它作为 lambda 参数声明的一部分来执行过:

Functionfoo=(s)->s.toLowerCase();

通过这段代码你会发现没有必要把 s 定义为 String,它的类型会由编译器自动推断出来。使用 Java 10,你可以编写如下代码:

varlist =newArrayList();

编译器会推断 list 是 ArrayList 类型。使用 var关键字可以帮助你减少一些代码的冗长度,尤其是泛型已经存在于变量初始化或者变量名称中时。它容易获得且易于理解,不必依靠 IDE 来告诉你变量的具体类型。

Java 11会进一步增强这一点,所以var也是 lambda 参数的合法类型,这意味着前面提到的 lambda 也可以写成 (var s) -> s.toLowerCase();。你可能会问为什么可以这么写,实际上,忽略类型的效果是一样的。一个主要的原因是,有一个类型的话意味着你可以注释得更好。

具体哪些情况应该使用var,请阅读 Stuart Marks 的风格指南。

http://openjdk.java.net/projects/amber/LVTIstyle.html

原始字符串文字

目前另一项增强功能被提出并正在积极研究中,那就是原始字符串文字功能。在原始字符串中,字符串中的每个字符都按原样读取,包括换行符!这个功能对于那些需要大量转义或者跨越多行的字符串来说特别有用。例如,这可以是硬编码的 HTML 或 SQL 查询:

Stringhtml ="<html>\n"+

"  <body>\n"+

"    <p>Hello World.</p>\n"+

"  </body>\n"+

"</html>\n";

有了原始字符串文字特性,以上代码可以写成这样:

String html = `

Hello World.

`;

在新的语法中当,反引号(`)用作原始字符串符号。如果你需要在字符串文本中使用反引号,则只需使用双反引号将字符串包围起来,或者三元、四元反引号也可以,只要开始和结束的反引号数量相同即可。

String str =Thisisa rawstringwith backticks inside;

虽然原始字符串文字尚未加入 JEP,但是添加该特性所需的很多帮助方法目前正在添加到 Java 11的字符串中,这表明原始字符串文字可能会在 Java 11 中呈现给大家。

switch 表达式

有关 switch 语句的多项改进正在进行,其中就包括了全开模式匹配。我对 switch 表达式充满期待。如果你曾经写过 switch 语句,那么代码可能是这样的:

intval;

switch (str) {

case"foo":val=1;break;

case"bar":val=2;break;

case"baz":val=3;break;

default:val=-1;

}

有了 switch 表达式,上面的代码可以简化为:

intval =switch(str) {

case"foo":break1;

case"bar":break2;

case"baz":break3;

default:break-1;

}

这意味着 break 语句能够获得 switch 表达式的结果值,就像 return 获得方法的返回值一样。在以上例子中,break 是 case 的唯一语句,如果继续简化,一种类似 lambda 语法的写法可以将上述代码改为:

intval =switch(str) {

case"foo"->1;

case"bar"->2;

case"baz"->3;

default->-1;

}

如上所述,添加 switch 表达式是模式匹配的一个步骤,它使你不仅能够切换编译时常量,还可以是类型、条件检查等等。

目前 switch 表达式已经实现了,经过测试、代码审查和批准之后,相信将其发布到 JDK 中只是一个时间问题。离 Java 11发布还有足够长的时间,在 Java 11中加入 switch 表达式应该没问题。

其他变化

除了上述提到的语言变化之外,还有很多其他的东西可能在近期或者不远的将来出现在 Java 的新版本中。JEP 的提案越来越多,比如支持枚举泛型类型参数的增强枚举、前文已经提到的模式匹配、动态调用、值类型,等等。

如何将单个文件类作为脚本启动,类似于shell、Perl 或者 Python 脚本在命令行的运行方式一样?Java 后台引擎也进行了很多改进。这包括对 JVM 本身的更改,这样的更改对语言层面不会有影响,例如新的超低延迟 GC,用于与本机代码更好地实现互操作性的 API,改变内部类在 JVM 级别(基于嵌套的访问控制)以及一些其他的改进。

那么,我们什么时候可以看到这些新功能呢?答案是未来的3月或者9月。有些功能确实相互依赖,但是随着新版本的发布,从功能准备就绪到我们获得支持它的 JVM 版本之间的时间很快。

至于语言和平台的快速发展对 Java 是否有益,相信读者心中有数。

小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

相关文章

  • 程序员们,再不升级 Java 10 就晚了!

    正如我们大家都知道的,Java 的最新版本已经来到了10。本文将重点介绍当前正在开发的一些有趣的 Java 新功能...

  • 程序员们,再不跳,晚了

    从时间节点上来看,3月、4月是每年跳槽的黄金季! 之前,如果你每几年换一次工作,人们会觉得你的简历上有 “污点”。...

  • 再不记录就晚了

    看了看锤子便签,对你的记录写到第二十二天。再看看日历,今天已经是你出生的第四十七天。亲爱的宝贝,中间这二十多天里,...

  • 再不运动就晚了

    再不运动就晚了,这是这次元旦假期去爬武功山的第一感受。 在这次旅行之前的一个周每天我都运动半小时,但仅限于一些拉伸...

  • 再不告白就晚了

    青春的结局都已写好 所有的泪水都已启程 却忽然忘了是怎么样的一个开始 再那个古老的不再回来的夏日 无论我如何追寻 ...

  • 再不申请就晚了!?

    大三开始,曾经遥远的选择终于近在咫尺了。保研、考研、工作、出国的选择横亘在眼前。各大实习申请也如火如荼,“再不申请...

  • 再不逼婚就晚了

    01 再不逼婚就晚了,这是很多父母的口头禅。 闺蜜最近和我分享,说她的爸爸妈妈希望她早点结婚,闺蜜不过26岁,只是...

  • 倒计时2天|再不上车就晚了,上班这点事儿情人节等你开撩!

    前方高能预警 再不上车就晚了! 再不上车就晚了! 再不上车就晚了! 上班这点事儿情人节特别活动将于2天后2月14号...

  • 健康产业机会升级,再不创业就晚了!

    目前我国健康服务产业规模接近5万亿,按照国家规划,到2020年将达到8万亿,预计到2030年健康服务产业规模能达到...

  • 再不努力就晚了

    “记住要仰望星空,不要低头看脚下。无论生活如何艰难,请保持一颗好奇心。” ——史...

网友评论

    本文标题:程序员们,再不升级 Java 10 就晚了!

    本文链接:https://www.haomeiwen.com/subject/odrtyqtx.html