java基础学习的最后一天,学习了java8的新特性,主要是Lambda表达式、方法引用与Stream类。
Lambda表达式与方法引用实在太简洁,虽然能看出是怎么简化的,但是要真正熟练还是要在以后多加使用吧。Stream类的API确实很强,但是每一行语句都有n个引用看得人真是头大,不自己用还是很迷,等以后用到再回来复习吧,这里把主要的内容记录一下。
Lambda表达式
Lambda 表达式:在Java 8 语言中引入的一种新的语法元素和操
作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符
或箭头操作符。它将 Lambda 分为两个部分:
左侧:指定了 Lambda 表达式需要的参数列表;
右侧:指定了 Lambda 体,是抽象方法的实现逻辑,也即
Lambda 表达式要执行的功能。
格式:
总结六种情况:
->左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,其一对()也可以省略;
->右边:lambda体应该使用一对{}包裹;如果lambda体只有一条执行语句(可能是return语句),省略这一对{}和return关键字。
函数式接口
如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。
Lambda表达式的本质:作为函数式接口的实例。
Java8中关于Lambda表达式提供的4个基本的函数式接口:
方法引用
方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用也是函数式接口的一个实例,通过方法的名字来指向一个方法。
当要传递给Lambda体的操作,有已经实现的方法了,就可以使用方法引用!
格式:
类(或对象) :: 方法名
分为如下的三种情况:
- 情况1 对象 :: 非静态方法
- 情况2 类 :: 静态方法
- 情况3 类 :: 非静态方法
使用要求:
要求接口中的抽象方法的形参列表和返回值类型与方法引用的方法的形参列表和返回值类型相同!(针对于情况1和情况2)
当函数式接口方法的第一个参数是需要引用方法的调用者,并且第二个参数是需要引用方法的参数(或无参数)时:ClassName::methodName(针对于情况3)
Stream API
1.Stream API的理解:
1.1 Stream关注的是对数据的运算,与CPU打交道
集合关注的是数据的存储,与内存打交道
1.2 java8提供了一套api,使用这套api可以对内存中的数据进行过滤、排序、映射、归约等操作。类似于sql对数据库中表的相关操作。
2.注意点:
- ①Stream 自己不会存储元素。
- ②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
- ③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。
3.Stream的使用流程:
- ① Stream的实例化
- ② 一系列的中间操作(过滤、映射、…)
- ③ 终止操作
4.使用流程的注意点:
- 4.1 一个中间操作链,对数据源的数据进行处理;
- 4.2 一旦执行终止操作,就执行中间操作链,并产生结果。之后,不会再被使用。
5.步骤一:Stream实例化
方式一:通过集合
方式二:通过数组
方式三:通过Stream的of()
方式四:创建无限流
6.步骤二:中间操作
7.步骤三:终止操作
总结
接近一个月的时间,把java语言基础过了一遍,能感觉到自己知道的东西多了,对各个方面都了解一点,但是学习时间还是太短了,每天看的东西太多,真正深入记忆,深入理解的东西就少了,但是还是要往后学吧,学到后面应该也会对基础的内容有更深的理解,学完基本的ssm框架再回头来吧基础内容复习理解一遍,今天的记录就到这里吧。