文章目录
一.Lamda表达式
- Lamda表达式概述:
Lambda表达式是JDK1.8之后的一种语法,是一个匿名函数,是对匿名函数的简写形式,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升;
-
使用lamda表达式的条件:
- 使用Lambda必须要有接口,并且要求接口中有且仅有一个抽象方法。也就是函数式接口
-
Lambda表达式简化代码的过程
第一阶段
public class TestLamda1 {
public static void main(String[] args) {
Ilove love = new Love();
love.love(1);
}
}
//定义一个函数式接口,即只有一个抽象方法的接口
interface Ilove{
void love(int a);
}
class Love implements Ilove{
@Override
public void love(int a) {
System.out.println("i love you ->" + a);
}
}
运行结果:
第二阶段:将外部类更改为静态内部类
public class TestLamda1 {
//静态内部类(定义在类中的类)
static class Love implements Ilove{
@Override
public void love(int a) {
System.out.println("i love you ->" + a);
}
}
public static void main(String[] args) {
Ilove love = new Love();
love.love(1);
}
}
//定义一个函数式接口,即只有一个抽象方法的接口
interface Ilove{
void love(int a);
}
运行结果:
第三阶段:将静态内部类改为局部内部类
public class TestLamda1 {
public static void main(String[] args) {
//局部内部类(定义在方法中的类)
class Love implements Ilove{
@Override
public void love(int a) {
System.out.println("i love you ->" + a);
}
}
Ilove love = new Love();
love.love(1);
}
}
//定义一个函数式接口,即只有一个抽象方法的接口
interface Ilove{
void love(int a);
}
运行结果:
第四阶段:将局部内部类改为匿名内部类
public class TestLamda1 {
public static void main(String[] args) {
//匿名内部类
Ilove love = new Ilove() {
@Override
public void love(int a) {
System.out.println("i love you ->" + a);
}
};
love.love(1);
}
}
//定义一个函数式接口,即只有一个抽象方法的接口
interface Ilove{
void love(int a);
}
运行结果:
第五阶段:改为lamda表达式形式
public class TestLamda1 {
public static void main(String[] args) {
// 1.省略匿名内部类名称
// 2.省略方法修饰符
// 3.因为编译器可以自己判断返回值类型是什么,所有也可以省略。
// 4.方法名称以及赋值给了love,所有也可以省略。
// 5.方法括号中的参数类型也可以省略
// 6.然后在方法括号后面加上->
/* Ilove love = (a)-> {
System.out.println("i love you ->" + a);
};*/
//如果方法体中只有一行代码就可以连{ }也省略掉,如果有多行代码,就不可省略。
Ilove love = (a)-> System.out.println("i love you ->" + a);
love.love(1);
}
}
//定义一个函数式接口,即只有一个抽象方法的接口
interface Ilove{
void love(int a);
}
运行结果:
这样,我们就成功的把“一块代码”赋给了一个变量。而“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个Lambda表达式。