java8学习笔记之lambda表达式
2017-05-19 17:40
661 查看
1、lambda表达式特点
lambda表达式可以理解为可传递的匿名函数的一种方式,无名称,但有参数列表和函数体以及返回类型,可能还有一个可抛出异常的列表。2、lambda表达式基本语法
(parameters) -> expression 或 (parameters) -> {statements;}
lambda表达式如果没有return语句, statements最后一条语句的返回类型是该表达式的返回类型。
3、lambda 示例
4、哪里可以使用lambda表达式
函数式接口的地方可以使用lambda表达式,什么是lambda表达式?只有一个抽象函数的接口。比如public interface Comparator<T> {int compare(T o1, T o2); }
lambda表达式允许我们直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例。比如:
lambda表达式可以被赋值给一个变量,或传递给一个可以接受函数式接口作为参数的方法。
5、 java.util.function 包有很多函数体可以供我们使用。常用的Predicate、Consumer、Function
Predicate函数式接口定义了一个名为test的抽象方法,该方法接受泛型T对象,并返回一个boolean.Consumer定义了一个名为accept的抽象方法,它接受泛型T的对象,没有返回(void)
Function接口定义了一个叫作apply的方法,它接受一个泛型T的对象,并返回一个泛型R的对象
lambda常用函数式接口以及示例
6、lambda表达式的类型检查
lambda表达式所处的地方需要的类型成为目标类型。类型检查时,首先查找此处方法的声明中,表达式所处位置的参数是不是个函数式接口,如果是查找该函数式接口的函数描述符,判断lambda表达式函数描述符是否符合目标类型,符合则检查通过特殊
1)如果一个lambda的主体是一个语句表达式,它就和一个返回void的函数描述符兼容。2)lambda表达式可以使用局部变量,但是局部变量必须是final类型,以为局部变量存储位置处于栈区,访问时改变量可能已经销毁,如果是final可以在编译期直接拷贝一份副本。
相关文章推荐
- Java8学习笔记之Lambda表达式
- 【Java学习笔记之三十一】详解Java8 lambda表达式
- java lambda表达式学习笔记
- java lambda表达式 闭包学习笔记
- [学习笔记] Java核心技术 卷一:基础知识 接口、lambda表达式与内部类(三)
- java8新特性学习笔记(一) Lambda表达式
- Java8学习笔记(一)-初步认识Lambda表达式
- Java学习笔记-Lambda表达式及內建函数式接口
- Java8学习笔记 — 【Lambda表达式】
- Java8 学习笔记--函数式接口与lambda表达式的关系
- 一、JAVA8学习笔记 Lambda表达式快速入门
- Java Lambda 表达式学习笔记
- java lambda表达式学习笔记
- Java8学习笔记----Lambda表达式 (转)
- concurrency runtime学习笔记之一:Lambda表达式
- java学习笔记02--运算符、表达式 .
- 黑马程序员之C#学习笔记: Lambda表达式学习总结
- 闭包,lambda表达式之学习笔记
- java学习笔记06--正则表达式