JDK8 — 17特性

简介: JDK8 — 17特性

我是南城余!阿里云开发者平台专家博士证书获得者!

欢迎关注我的博客!一同成长!

一名从事运维开发的worker,记录分享学习。

专注于AI,运维开发,windows Linux 系统领域的分享!


JDK认知

Java版本迭代概述

备注:LTS(Long-term Support)即长期支持

名词解释:Oracle JDK和Open JDK

如何学习新特性

对于新特性,我们应该从哪几个角度学习新特性呢?

  • 语法层面:
  • 比如JDK5中的自动拆箱、自动装箱、enum、泛型
  • 比如JDK8中的lambda表达式、接口中的默认方法、静态方法
  • 比如JDK10中局部变量的类型推断
  • 比如JDK12中的switch
  • 比如JDK13中的文本块
  • API层面:
  • 比如JDK8中的Stream、Optional、新的日期时间、HashMap的底层结构
  • 比如JDK9中String的底层结构
  • 新的 / 过时的 API
  • 底层优化
  • 比如JDK8中永久代被元空间替代、新的JS执行引擎
  • 比如新的垃圾回收器、GC参数、JVM的优化

Lambda表达式

使用场景

  • 在给函数式接口提供实例时,都可以使用lambda表达式
  1. Predicate<T>:用于输入一个参数,返回一个布尔值的情况。比如判断一个数字是否大于 10,可以通过 Predicate 实现。
  2. Consumer<T>:用于接收一个参数,但没有返回值的情况。比如对列表中的每个元素进行操作的场景。
  3. Function<T, R>:用于输入一个参数,并返回一个结果的情况。比如将字符串转为大写,可以用 Function 实现。
  4. Supplier<T>:用于不接收任何参数,而是提供一个返回值的情况。比如每次调用时返回一个新的随机数。

格式

->:Lambda 操作符或箭头操作符

->的左边:Lambda形参列表,对应着重要的接口中的抽象方法的形参列表

->的右边:Lambda体,对应着接口的实现类要重写的方法的方法体

本质

》一方面,Lambda表达式作为接口的实现类的对象。

》另一方面,Lambda表达式是一个匿名函数

函数式接口

》如果接口中只声明一个抽象方法,则此接口就称为函数式接口

》因为只有函数式接口提供实现类的对象时,我们才可以使用lambda表达式

API中函数式接口所在的包

jdk8中声明的函数式接口都在java.util.function包下

4个基本的函数式接口

接口 对应的抽象方法

消费类型接口 Consumer<T> void accept(T t)

供给类型接口 Supplier<T> T get()

函数类型接口 Function<T,R> R apply(T t)

判断类型接口 Predicate<T> boolean test(T t)

总结

->的左边:lambda形参列表,参数的类型都可以省略,如果形参只有一个,则()也可以省略

->的右边:lambda体,对应着重写的方法的方法体。如果方法体中只有一行执行语句,则一对{}可以省略

如果有return关键字,则必须一并省略。

方法引用

》方法引用,可以理解基于lambda表达式的进一步刻画

》当需要提供一个函数式接口的实例时,我们可以使用lambda表达式提供此实例

》当满足一定的条件的情况下,我们还可以使用方法引用或构造器引用替换lambda表达式

本质

方法引用作为类函数式接口的实例。

格式

类 (或对象) :: 方法名

》对象 :: 实例方法

要求:函数式接口中的抽象方法a与其内部实现时调用的对象的某个方法b的形参列表和返回值类型都相同(或一致)

此时,可以考虑使用方法b实现方法a的替换、覆盖。此替换或覆盖即为方法引用

》类 :: 静态方法

》类 :: 实例方法

构造器引用

格式

类名 :: new

说明

》调用了类名对应的类中的某一个确定的构造器

》具体调用的构造器取决于函数式接口的抽象方法的形参列表

数组引用

格式

数组名[] :: new

Stream API 与 集合框架

》Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU的

》Stream API之于集合,类似于SQL之于数据库查询

使用说明

  1. Stream自己不会存储元素
  2. Stream不会改变源对象。相反,他们会返回一个特有结果的新Stream
  3. Stream操作是延迟执行的,这意味着他们会等到需要结果的时候才执行,即一旦执行终止
  4. Stream一旦执行了终止操作,就不能在调用其他中间件操作,或终止操作。

目录
相关文章
|
6天前
|
安全 JavaScript 前端开发
JDK1.8的重要的新特性与功能
Java Development Kit (JDK) 1.8,也称为Java 8,是Java平台的一个重大更新,于2014年3月发布。它引入了多项新特性、新的API和性能提升
103 3
|
6天前
|
监控 安全 Java
探索Java的未来:JDK 18新特性全览
探索Java的未来:JDK 18新特性全览
86 0
|
6天前
|
缓存 安全 Java
JDK 14全景透视:每个Java开发者必知的新特性
JDK 14全景透视:每个Java开发者必知的新特性
56 0
|
6天前
|
JavaScript 前端开发 安全
Java新纪元:一探JDK 15的全新特性
Java新纪元:一探JDK 15的全新特性
49 0
|
6天前
|
JSON Java API
探秘JDK 13的黑科技:新特性一览
探秘JDK 13的黑科技:新特性一览
53 0
|
6天前
|
Java 测试技术 API
深度剖析JDK 11全新特性:编程艺术的巅峰之作
深度剖析JDK 11全新特性:编程艺术的巅峰之作
50 0
|
6天前
|
存储 Java 数据管理
探秘JDK 10:崭新特性悉数解析
探秘JDK 10:崭新特性悉数解析
67 0
|
6天前
|
JSON 编解码 Java
Java升级:JDK 9新特性全面解析“
Java升级:JDK 9新特性全面解析“
75 0
|
6天前
|
算法 Java 编译器
升级指南之JDK 11+ 新特性和AJDK
本文详细介绍了JDK个版本之间的特性、区别以及JDK版本更迭时优化了哪些地方,对JDK的版本选择给出了建议,以及升级教程。
|
6天前
|
存储 安全 Java
JDK22发布了!来看看有哪些新特性
以上是介绍 JDK22新特性的全部内容了,突然V哥想要感慨一下,技术之路,学无止境,选择 IT 技术,作个纯粹的人,享受研究技术的过程,这种带来的快感,也许只有真正热爱编程的人才能有体会。