#Java#Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天 , JDK 14 正式发布了 , 这次发布的新版本一共包含了16个新的特性 。
其实 , 从Java8 到 Java14, 真正的改变了程序员写代码的方式的特性并不多 , 我们这篇文章就来看一下都有哪些 。
Lambda表达式Lambda 表达式是 Java 8 中最重要的一个新特性 , Lambda 允许把函数作为一个方法的参数 。
lambda 表达式的语法格式如下:
(parameters) -> expression
或
(parameters) ->{ statements;
如以下例子:
// 1. 不需要参数返回值为 5
() -> 5
// 2. 接收一个参数(数字类型)返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字)并返回他们的差值
(x y) -> x – y
// 4. 接收2个int型整数返回他们的和
(int x int y) -> x + y
// 5. 接受一个 string 对象并在控制台打印不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
Lambda表达式具有简洁、容易进行并行计算、是未来的编程趋势等优点 , 但同时也会带来调试困难 , 新人理解成本高等缺点 。
Streams API除了Lambda 表达式外 , Java 8中还引入了Stream API , 这使得Java终于进入到函数式编程的行列中来了 。
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象 。
Stream API可以极大提高Java程序员的生产力 , 让程序员写出高效率、干净、简洁的代码 。
如下图 , 就是通过Stream API对集合进行了一系列的操作:
List<String> strings = Arrays.asList(\"Hollis\" \"HollisChuang\" \"hollis\" \"Hello\" \"HelloWorld\" \"Hollis\");
Stream s = strings.stream().filter(string -> string.length()<= 6).map(String::length).sorted().limit(3).distinct();
而且 , Stream还支持并行流 , 在性能上比传统的for循环要好很多 。
从Lambda表达式和Stream API问世至今 , 已经有6年的时间了 , 相信很多人已经在工作中使用过这些特性了 。
虽然对于这两种语法的使用 , 很多人持有不同的看法 , 但是作者还是认为这个功能是十分好用的 , 只是在日常写代码的时候不要过分\"炫技\"使用超长的流式操作 , 代码可读性不要太低就可以了 。
新的日期和时间 API在Java 8之前 , 日期时间 API 存在诸多问题 , 如:Date非线程安全、java.util和java.sql的包中都有日期类、日期类并不提供国际化 , 没有时区支持 。
所以 , Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理 。
新的java.time包涵盖了所有处理日期 , 时间 , 日期/时间 , 时区 , 时刻(instants) , 过程(during)与时钟(clock)的操作 。
常见操作如下:
// 获取当前的日期时间
LocalDateTime currentTime = LocalDateTime.now();
System.out.println(\"当前时间: \" + currentTime);
// 时间比较
LocalDate today = LocalDate.now();
LocalDate date1 = LocalDate.of(2014 01 14);
if(date1.equals(today)){
// 时间增加
LocalTime time = LocalTime.now();
LocalTime newTime = time.plusHours(2); // adding two hours
但是说实话 , Java8中的时间API作者日常工作中用的比较少 , 主要是有很多历史代码 , 还是依赖Date等类型 , 使用新的API就要面临互相转换问题 。
- 『Java』java数据结构系列——什么是数据结构
- 『Java』马云:成功人跟普通人差不多,但这三点我一定要分享给所有年轻人
- #Java#java线程到底有多少种状态?
- #智能手表#1、初识java-1
- [华为]有朋友问我“JAVA全栈”、“互联网架构师”和“JAVAEE”到底是什么?
- 「javascript」这边走Javascript了解一下
- 手机中国榜单又要变了?,DxOMARK即将公布三星S20+拍照成绩
- 「华为」一篇有趣的Java class
- struts@Java面试之项目面试问题——不看面试会后悔的
- 「Java」六面蚂蚁金服,唬住了面试官要了30K;其实Java面试也没那么难