写点什么

进击的 Java(九)

作者:ES_her0
  • 2021 年 11 月 17 日
  • 本文字数:814 字

    阅读完需:约 3 分钟

前几期讲的特性已经几乎涵盖了日常的开发了,但 Java 的野心不止于此,Java 还想继续提升性能,可能绝大多数开发者不会用到,能用到的也不会选择 Java,但这不妨碍 Java 做技术储备。有时候我觉得 17 只是把前几期的版本做了一下 bug 修复和完善,然后改一下版本号。下面简单介绍一下 16 之后的版本都有什么。

向量 API

Java 很早之前就有 Vector 这样的数据结构,但这次发布的 vector 要高端的多。真正实现了 Java 的高性能向量计算。什么是向量呢?向量是一个有大小和方向的量,可以表示二维或者三维的空间,让空间的运算得到抽象并映射成计算公式。Java 这次就是要给 AI 开发者一个高性能的 API,虽然还是预览的版本。稍微深究一下,传统的 CPU 指令集是 SISD(单指令单数据),Vector API 会讲计算的代码转换成 SIMD(单指令多数据),最大程度的压榨 CPU 以获取较高的性能。

switch 模式匹配

之前提到过 instanceof 的模式匹配,提到过 switch 的->表达式。现在将两者结合起来,switch 的同时进行类型的匹配,之前提到的 sealed class 也是在为这个新特性打基础。现在 switch 可以这么写:

switch (o) {case null -> System.out.println("null");case String s -> System.out.println("String");case Point p -> System.out.println(p.toString());case int[] ia -> System.out.println("Array length" + ia.length);default -> System.out.println("Something else");}
复制代码

可以注意到是支持 null 判断的,这样就不用在外面单独写一层 if 判断空了。同时,case 的条件也可以是多个:

 switch (o) {        case null, String s -> System.out.println("String: " + s);    }
复制代码

做运算也没问题:

switch (s) {        case Triangle t && (t.calculateArea() > 100) ->            System.out.println("Large triangle");        default ->            System.out.println("A shape, possibly a small triangle");    }
复制代码

可以看出 Java 真的在努力改变自己曾经啰嗦的印象,掌握了开发者的喜好密码。


用户头像

ES_her0

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
进击的Java(九)