Java8新特性

本文详细介绍了Java8的主要新特性,包括接口的默认方法、Lambda表达式、函数式接口、引用类的构造器方法、Lambda访问外部变量、内置的函数式接口如Predicate、Function、Supplier、Consumer和Comparator、Optional、Stream流的使用、并行流、Map集合的新特性以及新的日期API。通过示例代码,阐述了这些新特性的应用场景和优势。
摘要由CSDN通过智能技术生成

Java8(又称jdk1.8)是Java语言开发的一个主要版本。Oracle公司与2014年3月18日发布Java8,它支持函数式编程,新的JavaScript引擎,新的日期API,新的StreamAPI等。今天,让我们一起来学习Java8的新特性。

目录:

一、接口内允许添加默认实现的方法

二、Lambda表达式

三、函数式接口Functional Interface

四、便捷的引用类的构造器及方法

五、Lambda访问外部变量节接口默认方法

          5.1 访问局部变量

          5.2 访问成员变量及接口默认方法

          5.3 访问接口的默认方法

六、内置的函数式接口

          6.1 Prdicate断言

          6.2 Function

          6.3 Supplier生产者

          6.4 Consumer消费者

          6.5 Comparator

七、Optioal

八、Streams流

          8.1 Filter流

          8.2 Sorted 排序

          8.3 Map转换

          8.4 Match匹配

          8.5 Count计数

          8.6 Reduce

九、Parallel Streams并行流

          9.1 顺序流排序

          9.2 并行流排序

十、Map集合

十一、新的日期API

   11.1 Clock

           11.2 Timezones时区

           11.3 LocalTime

           11.4 LocalDate

           11.5 LocalDateTime

十二、Annotations注解

更多的新特性可以参阅官网:What's New in JDK 8

正文:

接口内允许添加默认实现的方法

     Java8允许我们通过default关键字对接口中定义的抽象方法提供一个默认的实现。

         请看下面示例代码:

  在上面个这个接口中,我们除了定义了一个抽象方法calculate,还定义了一个带有默认实现的方法sqrt。我们在实现这个接口时,可以只需要实现calculate方法,默认方法sqrt可以直接调用即可,也就是说我们可以不必强制实现sqrt方法。

补充:通过default关键字这个新特性,可以非常方便地对之前的接口做扩展,而此接口的实现类不必做任何改动。

上面通过匿名对象实现了Formula接口。但是即使是这样,我们为了完成一个sqrt(a*100)简单计算,就写了6行代码,很是冗余。

Lambda表达式

在学习Lambda表达式之前,我们先看一段老版本的示例代码,其对一个含有字符串的集合进行排序:

Collections工具类提供了静态方法sort方法,入参是一个List集合,和一个Comparator比较器,以便对给定的List集合进行排序。上面的示例代码创建了一个匿名内部类作为入参,这种类似的操作在我们的日常工作中随处可见。

Java8中不再推荐这种写法,而是推荐使用Lambda表达式。

Java8中不再推荐这种写法,上面的这段代码变得简短很多而且易于阅读。但是我们可以载精炼一点。 

 对于只包含一行方法的代码块,我们可以省略大括号,直接return关键代码即可。追求极致,我们还可以让它再短点。

 

 

List集合现在已经添加了sort 方法。而且Java编译器能够根据类型推断机制判断出参数类型,这样,你连入参的类型都可以省略啦,怎么样,是不是感觉很强大呢!

函数式接口Functional Interface

抛出一个疑问:在我们书写一段Lambda表达式后(比如上一章节中匿名内部类的Lambda表达式缩写形式),Java编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值