Lambda表达式

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅
链接点击直达:下载链接


面向对象编程思想

面向对象强调的是对象 , “必须通过对象的形式来做事情”,相对来讲比较复杂,有时候我们只是为了做某件事情而不得不创建一个对象 , 例如线程执行任务,我们不得不创建一个实现Runnable接口对象,但我们真正希望的是将run方法中的代码传递给线程对象执行

函数编程思想

在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。例如线程执行任务 , 使用函数式思想 , 我们就可以通过传递一段代码给线程对象执行,而不需要创建任务对象-
小结-
函数式编程思想强调做什么,而不是以什么形式做,也就是直接传入一段代码,不需要创建对象

知识点-- Lambda表达式的体验

目标-
理解Lambda表达式的作用-
路径-
实现Runnable接口的方式创建线程执行任务-
匿名内部类方式创建线程执行任务-
Lambda方式创建线程执行任务-
讲解-
实现Runnable接口的方式创建线程执行任务

/*
实现类:
1.创建一个实现类,实现Runnable接口
2.在实现类中,重写run()方法,把任务放入run()方法中
3.创建实现类对象
4.创建Thread线程对象,传入实现类对象
5.使用线程对象调用start()方法,启动并执行线程
总共需要5个步骤,一步都不能少,为什么要创建实现类,为了得到线程的任务
 */
class MyRunnable implements Runnable{
    @Override
    public void run() {
        System.out.println("实现的方法创建线程的任务执行勒...");
    }
}

public class Demo {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        new Thread(myRunnable).start();
    }
}

匿名内部类方式创建线程执行任务

public class Demo {
    public static void main(String[] args) {
        /*
        匿名内部类:
        1.创建Thread线程对象,传入Runnable接口的匿名内部类
        2.在匿名内部类中重写run()方法,把任务放入run()方法中
        3.使用线程对象调用start()方法,启动并执行线程
        总共需要3个步骤,一步都不能少,为什么要创建Runnable的匿名内部类类,为了得到线程的任务
         */
        // 匿名内部类的方式:
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类的方式创建线程的任务执行了");
            }
        });
        t2.start();
    }
}

Lambda方式创建线程执行任务-
以上2种方式都是通过Runnable接口的实现类对象,来传入线程需要执行的任务(面向对象编程)-
思考: 是否能够不通过Runnable接口的实现类对象来传入任务,而是直接把任务传给线程.-
Lambda表达式的概述:-
它是一个JDK8开始一个新语法。它是一种“代替语法”——可以代替我们之前编写的“面向某种接口”编程的情况

public class Demo {
    public static void main(String[] args) {
        // 体验Lambda表达式的方式:
        Thread t3 = new Thread(()->{System.out.println("Lambda表达式的方式");});
        t3.start();
    }
}

Lambda表达式的作用就是简化代码,省略了面向对象中类和方法的书写。

标准格式-
Lambda省去面向对象的条条框框,格式由3个部分组成:-
一些参数-
一个箭头-
一段代码

Lambda表达式的标准格式为:-
(参数类型 参数名,参数类型 参数名,…) -> { 代码语句 }

Lambda表达式的格式说明:-
1.小括号中的参数要和接口中抽象方法的形参列表一致,无参数则留空;多个参数-
则用逗号分隔。-
2.->是新引入的语法格式,代表指向动作。可以理解为把小括号中的参数传递给大-
括号中使用-
3.大括号中的内容其实就是存放以前重写抽象方法的方法体-
Lambda表达式的使用条件: 接口中有且仅有一个抽象方法的接口,才可以使用Lambda

表达式-
1.接口中只有一个抽象方法的接口,叫做函数式接口-
2.如果是函数式接口,那么就可以使用@FunctionalInterface注解来标识

使用Lambda表达式:-
1.判断接口是否是函数式接口-
2.如果是函数式接口,那么就直接写()->{}-
3.然后填充小括号和大括号中的内容

Lambda表达式省略格式

省略规则-
在Lambda标准格式的基础上,使用省略写法的规则为:

  1. 小括号内参数的类型可以省略;
  2. 如果小括号内有且仅有一个参数,则小括号可以省略;
  3. 如果大括号内有且仅有一条语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

案例演示

public class Demo_线程演示 {
	public static void main(String[] args) {
		//Lambda表达式省略规则
		Thread t2 = new Thread(()-> System.out.println("执行了"));
		t2.start();
	}
}
  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值