• λ希腊字母表中排序第十一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念
new Thread(()->System.out.println(“多线程学习。。。。”)).start()

为什么要使用lambda表达式

  • 避免匿名内部类定义过多
  • 可以让你的代码看起来很简洁
  • 去掉了一堆没有意义的代码,只留下核心的逻辑。

也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了

理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在

函数式接口的定义:

任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

通过以下代码推导lambda表达式的演变过程,如下:

1 从普通类到lambda表达式的严管过程

(1)普通接口类实现

package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {ILike like = new Like();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}//2.实现
class Like implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda");}
}

(2)静态内部类实现

package xiong.demo3;public class TestLambda1 {//3.静态内部类static class Like2 implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda2");}}public static void main(String[] args) {ILike like = new Like2();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}

(3)局部内部类实现


package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//4.局部内部类class Like3 implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda3");}}ILike like = new Like3();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}

(4)匿名内部类实现


package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//5.匿名内部类,没有类的名称,必须借助接口或者父类ILike like = new ILike() {@Overridepublic void lambda() {System.out.println("I like lambda4");}};like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}

(5)用lambda简化

package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//6.用lambda简化ILike like = ()->{System.out.println("I like lambda5");};like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}

2 lambda表达式的变化

public class TestLambda2 {public static void main(String[] args) {ILove love = (int a)->{System.out.println("I love you-->"+a);};love.love(520);//简化1 参数类型love = (a)->{System.out.println("I love you-->"+a);};love.love(521);//简化2 简化括号love = a->{System.out.println("I love you-->"+a);};love.love(522);//简化2 简化花括号love = a->System.out.println("I love you-->"+a);;love.love(523);}
}
//函数式接口
interface ILove{void love(int a);
}

总结

  1. lambda表达式只能在有一行代码的情况下才能简化成一行,如果有多行,那么就用代码块包裹。
  2. 前提是接口为函数式接口 。
  3. 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。

java多线程(8):Lamda表达式相关推荐

  1. 8、多线程:Lamda表达式

    lamda表达式推导过程: package com.zjl;/*** Created by zjl* 2020/11/17**/ /* * 推导lamda表达式 * */ public class T ...

  2. Java多线程:Lambda 表达式

    什么是Lambda 表达式 Lambda 表达式,也可称为闭包,它是Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). 使用 Lambda 表 ...

  3. Java基础知识——lamda表达式和函数式接口

    文章目录 一.Lambda表达式 二.函数式接口 2.1 函数式接口作用 2.2 常用函数式接口--Supplier接口 2.3 常用函数式接口--Consumer接口 2.4 常用函数式接口--Pr ...

  4. 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】

    why 事情的缘由是这样的,我们有两个平台,一个使用Oracle,另一个使用GreenPlum,查询结果封装成Map对象,如果使用相同的查询语句,Oracle的key是大写的,GreenPlum的ke ...

  5. Java --Lamda表达式

    Lamda:属于函数式编程的概念: interface IMessage {public void print() ; } public class TestDemo {public static v ...

  6. java构造函数传参_java 构造函数 , 参数传递 , lamda表达式

    1.  java 子类中必须显式或者隐式的调用父类的构造方法,原因是双亲委派机制.java 在创建一个对象是,会在构造方法中依次向上调用父类的构造方法. 为了找到父类的构造方法,所以子类应显式或者隐式 ...

  7. java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个电视购物项目后台采用java1.8编写,有些业务复杂的地方,使用lamda表达式可以简化开发 ...

  8. Java回调的四种写法(反射、直接调用、接口调用、Lamda表达式)

    1. 引言 在计算机程序设计中,回调函数,简称回调(Callback),是指通过函数参数传递到其他代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 以上是维基百科对&qu ...

  9. java之Lamda表达式的介绍

    Lamda表达式: λ希腊字母表中排序第11位的字母,英文名称为Lambda,它Lambda表达式是Java SE 8中一个重要的新特性,允许通过表达式来代替功能接口,它与其他方法相同,提供了一个正常 ...

  10. Java多线程——Thread Runnable源码解析

    Java多线程的两种实现方法大家都应该知道了:继承Thread的子类实例化和实现Runnable接口用这个接口实现类去创建Thread实例. Java的线程在Linux平台上使用的是NPTL机制,JV ...

最新文章

  1. 阿里云护航罗振宇2018“时间的朋友”跨年演讲,与千万观众一起跨年
  2. 使用VMware桥接模式组建局域网测试MSMQ(二)
  3. 两个inline-block消除间距和对齐(vertical-align)
  4. 学习计算机游戏编程,在线游戏学编程,游戏编程汇总
  5. 《Oracle高性能自动化运维》一一3.3 Redo产生场景
  6. React 项目开发问题积累
  7. 比特币可视化工具_这个比特币交易“可视化”网站,用一辆公交车带你“上车”...
  8. 有没有跟新型肺炎确诊患者同乘车?百度可查!
  9. 极光推送java服务器端_极光推送服务器端(JAVA)
  10. C++基础::string(二)
  11. 小米3c虚拟服务器,小米路由器3C固件逆向与测评-新手向
  12. java调用百度api完成人脸识别
  13. 国内外公有云对比:功能介绍、性能测试
  14. 梧桐计划发布!百度智能云携手合作伙伴共创“云智一体”繁荣新生态
  15. 放不下的原理_通俗易懂,几张图看懂大数据存储和计算原理
  16. Java电商平台-电商订单系统全解析
  17. 一句话+一张图——说清楚Aprioir关联规则算法
  18. Python:通过turtle 画樱花树
  19. C语言实验——用*号输出字母C的图案
  20. 数据仓库系列(一)什么是维度建模以及维度建模的基本要素

热门文章

  1. 有关队列的操作 python
  2. 饿了么“盛夏之战”,背后的底气是什么? | 一点财经
  3. python 找出两个dataframe中不同的元素
  4. 百里挑一,4款免费又实用的软件,用一次就爱上
  5. Spring batch批量处理框架最佳实践
  6. uniapp——uni-admin后台管理系统(使用uniCloud免费云服务器)
  7. 职业生涯步步高(转)
  8. 决战面试(二)智力题考察
  9. vnc桌面手机版,推荐5款好用的vnc桌面手机版软件
  10. 中式红木装修——打造适合审美的居住空间