面向对象思想:   找能解决问题的对象 ,调用对象的方法

函数式编程思想:只要能获取到结果,强调做什么,而不是以什么形式去做

实现Runnable代码:

public class Demo {public static void main(String[] args) {Runnable r=new Runnable() {@Overridepublic void run() {System.out.println("111");}};Thread t=new Thread(r);t.start();}
}

简化:省去了类名称,额外定义接口的实现

    new Thread(new Runnable() {@Overridepublic void run() {System.out.println("111");}}).start();

编程思想转换:

传递一段代码,才是我们真正的目的,创建对象只是受限于面向对象语法而不得不采取的一种手段和方法。如果我们将关注点从“怎么做”回归到“做什么”的本质上,过程与形式其实并不重要

体验lambda表达式:

创建新线程

   new Thread(()-> System.out.println("111")).start();

●()即run方法的参数(无),代表不需要任何条件

●中间的箭头表示将前面的参数传递给后面的代码

●后面的输出语句即业务逻辑代码

Lambda标准格式:

(参数类型 参数名称)->{代码语句}

():接口中抽象方法的参数列表,没有参数为空;有参数就写多个参数,用逗号分隔

-> :传递,把参数传递给方法体{}

{}:重写接口的抽象方法的方法体

例:lambda实现cook接口

public interface Cook {void cook();
}
public class Demo {public static void main(String[] args) {invokeCook(()->{System.out.println("做饭");});}public static void invokeCook(Cook c){c.cook();}
}

例:person类对age升序排序

Person[] arr={new Person(4,"a"),new Person(3,"b")};
Arrays.sort(arr,(Person p1,Person p2)->{return p1.getAge()-p2.getAge();});
for(Person p:arr){System.out.println(p);}

例:计算器Calculator接口,内涵calc可以将两个int数字相加得到和值

public interface Calcu {int cal(int a,int b);
}
public static void main(String[] args) {invokeCalc(10,30,(int a,int b)->{return a+b;});}private static void invokeCalc(int a,int b,Calcu ca){System.out.println(ca.cal(a,b));return;}

lambda省略格式

可推导,可省略:凡是根据根据上下文推导出来的内容,都可以省略书写

 上例调用calula接口可以写为

  invokeCalc(10,30,(int a,int b)->a+b);

对person按年龄排序可写为:

Arrays.sort(arr,(Person p1,Person p2)->p1.getAge()-p2.getAge());

 泛型后面可以不写(可推导)

ArrayList<String>list=new ArrayList<>();

Lambda使用前提

1、lambda必须有接口,且要求接口中有且仅有一个方法

有且只有一个抽象方法的接口,称为“函数式接口

2、必须有上下文推断

【java笔记】lambda表达式介绍和使用相关推荐

  1. 10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...

  2. 这是一个有趣的问题,Java 8 Lambda 表达式被编译成了什么?

    在了解了Java 8 Lambda的一些基本概念和应用后, 我们会有这样的一个问题: Lambda表达式被编译成了什么? 这是一个有趣的问题,涉及到JDK的具体的实现.本文将介绍OpenJDK对Lam ...

  3. Java 8 Lambda 表达式被编译成了什么?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取个gui 在了解了Java 8 Lambda的一些基本概念和应用后, 我们会 ...

  4. java 8 lambda表达式中的异常处理

    文章目录 简介 处理Unchecked Exception 处理checked Exception 总结 java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,l ...

  5. 深入浅出 Java 8 Lambda 表达式

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  6. lambda 两个list获取交集_《Java8 实战》笔记 - Lambda 表达式

    Lambda 表达式介绍 ​ 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它 有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表.这个定义够大的,让我 ...

  7. Java 8 Lambda表达式10个示例【存】

    PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...

  8. Java中Lambda表达式使用及详解

    Java中Lambda表达式使用及详解 前言 一.Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中.使 ...

  9. Java 8 Lambda 表达式详解

    版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...

  10. Java 8 Lambda表达式-接口实现

    Java 8 Lambda表达式在只有一个方法的接口实现代码编写中,可以起到简化作用: (argument list) -> body 具体看Runnable接口的例子 public class ...

最新文章

  1. QA: What's the difference between CustomControl and UserControl?
  2. pandas的自带数据集_盘点 | Python自带的那些数据集
  3. android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网
  4. android获取系统当前年月日时分秒的时间
  5. 01> Allwinner全志 T7 Android 7.1 编译
  6. Linux安装与配置SSH服务
  7. kaggle 电商数据分析
  8. 算法篇-union-find并查集
  9. excel自动求和_excel自动求和你会吗?更改姓名自动算出总分,三个函数轻松搞定...
  10. Pollard-Rho Algorithm简述
  11. 万字零基础微信前端开发总结
  12. 跨境电商平台哪个好?——扬帆际海
  13. 学生成绩管理系统(简单版)
  14. 100个成功创业经验方法谈
  15. 区块链在个性化推荐系统中的应用研究综述
  16. 使用STM8单片机+NTC热敏电阻自制简易温度巡检仪
  17. 黑科技时代,不了解这些你就OUT了
  18. 云服务完整删除mysql
  19. 一号店首页代码需其他的联系我
  20. 十一、实现QQ登陆(第三方的登陆)(用户部分)

热门文章

  1. Android推送分析
  2. Java基础之写文件——在通道写入过程中的缓冲区状态(BufferStateTrace)
  3. 斐波那契数列的递归与迭代写法比较
  4. HDU6322 Problem D. Euler Function【欧拉函数+数学规律】
  5. HDU4509 郑厂长系列故事——体检【水题】
  6. Bailian2708 平衡饮食【序列处理】
  7. Bailian2799 浮点数格式【文本处理+最值】
  8. UVA10168 Summation of Four Primes【筛选法】
  9. HDU2200 Eddy's AC难题【组合计算】
  10. 冷知识 —— 计算机科学及编程