Java8 新特性概述(60%)

亦凉 2022-06-14 07:44 409阅读 0赞

摘要: Java8在2014年已经发布,现在已经逐渐被广大开发者所认同,越来越多的框架选用,越来越多的公司选择Java8,经过一段时间的学习,发现Java的一些改动值得学习。

特性简介

  • 速度更快
    Java8优化了垃圾回收机制,对底层的内存结构进行了升级,永久区被移除,用元空间代替(直接使用物理内存,而不是分配内存,OOM异常减少),MaxPremGenSize使用MaxMetaspaceSize。Java8对底层的数据结构了进行了改善,例如HashMap以前的HashMap是数组加链表结构,现在增加了红黑树的结构,使得除了添加数据的操作,其他性能都有改善,在ConcurrentHashMap中使用了CAS算法而弃用了锁分段机制。
  • 代码更少
    使用新的语法,Lambda表达式用更少的代码带来相同的效果。
  • 便于并行
    提供了现成的方法来并行化处理。
  • 减少异常
    优化内存,减少OOM;提供了Optinal接口来处理空对象。

Lambda表达式

Lambda是一个匿名函数,我们可以吧Lamdba表达式理解为一段可以传递的代码。使用Lambda可以写出更简洁、灵活的代码。

例如,我们要比较两个整数的大小,如果使用比较器的话,代码可以这么写:

  1. public void testComparator(){
  2. Comparator<Integer> comparator = new Comparator<Integer>() {
  3. @Override
  4. public int compare(Integer x, Integer y) {
  5. return Integer.compare(x, y);
  6. }
  7. };
  8. }

当使用了Lambda表达式以后,可以这样:

  1. public void testComparatorLam(){
  2. Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y);
  3. }

函数式接口

函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method)。Java8在使用Lambda时,需要函数式接口的声明。如果每次使用Lambda表达式都需要自己编写函数式接口,确实有点麻烦。因此就有了四大函数式接口:Consumer, Supplier, Funciton, Predicate

方法引用于构造器引用

Stream API

Steam不同于之前java.io.*包中的数据流,它是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的的聚合操作。

使用stream API可以使复杂的业务逻辑一行代码搞定:

  1. public void test(){
  2. list.stream()
  3. .filter((e) - > stu.getScore > 60)
  4. .limit(3)
  5. .forEach(System.out:println);
  6. }

接口中的默认方法与静态方法

新时间日期API

发表评论

表情:
评论列表 (有 0 条评论,409人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java8 特性概述(60%)

    摘要: Java8在2014年已经发布,现在已经逐渐被广大开发者所认同,越来越多的框架选用,越来越多的公司选择Java8,经过一段时间的学习,发现Java的一些改动值得学习。

    相关 java8特性

    对于Java开发者来说,Java8的版本显然是一个具有里程碑意义的版本,蕴含了许多令人激动的新特性,如果能利用好这些新特性,能够大大提升我们的开发效率。Java8的函数式编程能

    相关 Java 8 特性

    Java 8 新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java...