1.函数式编程思想
1.面向对象强调:万物皆对象,我们做任何事情都要通过对象
2.函数式编程思想强调:尽量忽略面向对象的复杂语法,强调做什么,而不是通过什么去做
所以,我们先来完成一个简单的案例,感受一下Lambda表达式是如何的
2.案例引入
1.需求:在多线程场景下,在控制台输出:多线程启动啦
思路:1.创建自定义多线程类实现Runnble接口,创建对象启动
? ? ? ? ? ?2.优化使用匿名内部类的方式来完成
? ? ? ? ? ?3.使用Lambda表达式来完成
package com.chang.datasupply.controller;
/**
* @Author chang
* @Date 2024/1/18 10:21
* @Version 1.0
* @注释 需求:在多线程场景下,在控制台输出:多线程程序启动啦
*/
public class JavaTest {
public static void main(String[] args) {
// 方法一
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
//方法2
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("多线程启动啦!");
}
}).start();
//方法3
new Thread(() -> System.out.println("多线程启动啦!!!!")).start();
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("多线程程序启动啦");
}
}
3.Lamdba表达式的标准格式
我们先来分析一下匿名内部类方式编写代码的格式;
1.方法参数列表处的参数为空,说明本方法执行时不需要传参
2.方法的返回值类型为void,说明个方法的执行并没有返回结果
3.方法体中的内容才是我们具体要做的业务
我们再来分析一下Lamdba表达式方法编写的代码格式
1.()里没有内容,我们可以把他看作是方法执行时不需要传参数,参数为空
2. ->用箭头表示我们即将要做的事,也就是具体的业务
3. {}我们可以把他看做是一个代码块,代表了之前我们在方法体中需要写的业务内容
总结;使用Lamdba表达式的标准格式为:(方法的形式参数) -> {方法体}
1):如果有多个参数,参数之间用逗号分隔,如果没有参数,小括号里面为空
2):->是一个固定的标准写法,使用的符号是英文的,代表我们指向要操作的具体动作
3):{}里面是我们具体要完成的业务,也是我们的方法体
注意Lambda表达式的前提:接口+接口中有且仅有一个抽象方法