第18章:随堂复习与企业真题(JDK8-17新特性)

一、随堂复习

1. JDK新特性的概述

  • 几个重要的版本

    • jdk 5.0 / jdk 8.0 :里程碑式的版本

    • jdk9.0 开始每6个月发布一个新的版本

    • LTS : jdk8 、 jdk 11 、 jdk 17

  • 如何学习新特性

> 角度1:新的语法规则 (多关注)
  自动装箱、自动拆箱、注解、enum、Lambda表达式、方法引用、switch表达式、try-catch变化、record等
​
> 角度2:增加、过时、删除API
  StringBuilder、ArrayList、新的日期时间的API、Optional等
​
> 角度3:底层的优化、JVM参数的调整、GC的变化、内存结构(永久代--->元空间)

2. JDK8:lambda表达式

2.1 什么情况下可以使用lambda表达式
  • 在给函数式接口提供实例时,都可以考虑使用lambda表达式。

  • 基本语法的使用(重要)

2.2 函数式接口
  • 常见的函数式接口。Comparator \ Runnable \ java.util.function下定义的丰富的函数式接口

    消费型接口:Consumer<T>     void accept(T t)
    供给型接口:Supplier<T>     T get()
    函数型接口:Function<T,R>   R apply(T t)
    判断型接口:Predicate<T>    boolean test(T t)
2.3 方法引用、构造器引用、数组引用
  • 方法引用、构造器引用、数组引用:看做是lambda表达式的进一步刻画、表达。

  • (掌握)方法引用、构造器引用、数组引用的使用场景。

3. JDK8:Stream API的使用

  • Stream关注于内存中的多个数据的运算。

  • 使用步骤:① Stream 的实例化 ② 一系列的中间操作 ③ 终止操作

4. JDK8之后的新特性:语法层面

  • jShell工具

  • try-catch结构的变化。try(...){ }

  • 局部变量的类型推断:var

  • instanceof的模式匹配

  • switch表达式、switch的模式匹配

  • 文本块的使用:"""文本块"""

  • 新的引用数据类型:record (记录)

  • 密封类:sealed class

5. JDK8之后的新特性:其它

  • Optional类的使用

  • 其他:了解

二、企业真题

2.1 JDK8新特性

1. 谈谈java8新特性(京*旗下、时代*宇,信必*、招*信诺,中*外包,金*软件、阿**巴)
类似问题
> JDK1.8相较于JDK1.7有什么不一样?(惠*)
> JDK1.8的新特性有哪些?Stream API + Lambda表达式,还有吗?(久*国际物流)
  • lambda表达式、Stream API

  • jdk7的对比:元空间、HashMap、新的日期时间API、接口变化等。

2. JDK1.8在数据结构上发生了哪些变化 ?(银*数据)
  • 使用元空间替代永久代。 (方法区:jvm规范中提到的结构。

    • HotSpot来讲,jdk7:方法区的落地体现:永久代。 jdk8:方法区的落地体现:元空间。

  • HashMap底层结构

3. 你说的了解 Java的新特性 ,你说说JDK8改进的地方?(银*科技)
  • lambda表达式、Stream API

  • jdk7的对比:元空间、HashMap、新的日期时间API、接口变化等。

4. JDK1.8用的是哪个垃圾回收器?(O**O)

Parallel GC --> jdk9:默认使用G1GC --> ZGC (低延迟)

2.2 Lambda表达式

1. Lambda表达式有了解吗,说说如何使用的(O**O)
类似问题:
> Lambda的理解(国*)
1. Lambda表达式的使用举例:

(o1, o2) -> Integer.compare(o1,o2);

2. Lambda表达式的格式举例:

lambda形参列表 -> lambda体

3. Lambda表达式的格式

-> : lambda操作符或箭头操作符
-> 的左边: lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。
-> 的右边: lambda体,对应着接口的实现类要重写的方法的方法体。

4. Lambda表达式的本质:

> 一方面,lambda表达式作为接口的实现类的对象。  ---> "万事万物皆对象"
> 另一方面,lambda表达式是一个匿名函数。
2. 什么是函数式接口?有几种函数式接口(阿**巴)

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)

2.3 Stream API

1. 创建Stream的方式(阿**巴)

三种。

2. 你讲讲stream表达式是咋用的,干啥的?(中*国际,上海**网络)
> Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU的。
  集合关注的数据的存储,面向内存的。
> Stream API 之于集合,类似于SQL之于数据表的查询。
3. 集合用Stream流怎么实现过滤?(润*软件)

filter(Predicate predicate)

4. 用Stream怎么选出List里想要的数据?(惠*)

filter(Predicate predicate)

1. Stream API  vs 集合框架
> Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU的。
  集合关注的数据的存储,面向内存的。
> Stream API 之于集合,类似于SQL之于数据表的查询。

2. 使用说明

①Stream 自己不会存储元素。
②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。即一旦执行终止操作,就执行中间操作链,并产生结果。
④ Stream一旦执行了终止操作,就不能再调用其它中间操作或终止操作了。

3. Stream 执行流程
步骤1:Stream的实例化
步骤2:一系列的中间操作
步骤3:执行终止操作

2.4 其它版本新特性

1. 说说JDK15、JDK16、JDK17中的新特性都有什么?(银*数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值