持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天
Lamda表达式
介绍
- λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda
- 避免匿名内部类定义过多
- 其实质属于函数式编程的概念
- 去掉了一堆没有意义的代码,只留下核心逻辑
java8新特性
- Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
- Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
- 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
a -> System.out.println("i like lamda-->"+a)
new Thread (()->System.out.println(“多线程学习。。。。”)).start();
理解Functional Interface (函数式接口) 是学习Java8 lamda表达式的关键
函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口.
温馨提示:函数式接口是指只有一个方法的接口
对于函数式接口,我们可以通过Lamda表达式来创建该接口的对象.
public interface Runnable{
public abstract void run();
}
语法
lambda 表达式的语法格式如下
(parameters) -> expression
或
(parameters) ->{ statements; }
以下是lambda表达式的重要特征:
- 可选类型声明: 不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号: 一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号: 如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
实现
事例一:
public class Demo13_Lamda4 {
public static void main(String[] args) {
//6.lamda简化
ILike like = () ->{
System.out.println("I like lamda4");
};
like.lamda();
}
}
事例二:
public class Demo14_LamdaCase2 {
public static void main(String[] args) {
// 1.lamda
ILove love = (int a) -> {
System.out.println("I love you -->" + a);
};
// 2.lamda简化1.0
love = (a) -> {
System.out.println("I love you -->" + a);
};
// 3.lamda简化2.0
love = a -> {
System.out.println("I love you -->" + a);
};
// 3.lamda简化3.0
love = a -> System.out.println("I love you -->" + a);
/**总结:
* {}简略的条件是只能有一行代码,多行{}就不能简略了
* 前提是接口为函数式接口(只能有一个方法)
* 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上()
*/
love.love(520);
}
}
interface ILove {
void love(int a);
}
总结
了解java8的新特性,lambda表达式和函数式接口的概念以后,对知识有更好的总结。
\