lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。

lambda表达式的语法:

1. 参数 -> 表达式(无需指定返回类型)

   (String first, String second)

  -> first.length() - second.length()

2. 如果代码要完成的计算无法放在一个表达式中,可以把代码放在{}中

  (String first, String second)

  ->

  {

    if (first.length() < second.length())  return -1;

    else if (first.length() > second.length())  return 1;

    else return 0;

  }

3. 即使lambda表达式没有参数,仍然要提供空括号

  () -> { for(int i=0; i>=0;i--) System.out.println(i); }

4. 如果可以推导出表达式的参数类型,则可以忽略其类型

  Comparator<String> comp

    = (first, second)  //编译器可以推导出first和second必然是字符串

      -> first.length()-second.length();

5. 如果方法只有一个参数,而且这个参数的类型可以推导得出,那么也可以省略小括号

  ActionListener listener = event ->

    System.out.println("The time is " + new Date());

函数式接口:对于只有一个抽象方法的接口,需要这种接口的对象时,就可以提供一个lambda表达式。

1. Arrays类的sort方法的第二个参数需要一个Conparator实例。

  Arrays.sort (pianets, (first , second) -> first.lengthO - second.lengthO) ;

方法引用:

1. Timer t = new Timer(1000, event -> System.out.println(event)):

  Timer t = new Timer(1000, Systei.out::println);

  表达式 System.out::println 是一个方法引用( method reference ), 它等价于 lambda 表达式
  x -> System.out.println(x)

  用:: 操作符分隔方法名与对象或类名。主要有 3 种情况:

  (1) object::instanceMethod   例如, this::equals 等同于 x-> this.equals(x)  super::instanceMethod  

  (2) Class::staticMethod   例如:Math::pow 等价于(x,y) -> Math.pow(x, y) 

  (3) Class.instanceMethod

lambda表达式可以捕获外围作用域中变量的值,但是只能引用值不会改变的变量,lambda捕获的变量必须是最终变量。

lamdba表达式的更多相关文章

  1. Java8 Lamdba表达式 001

    在一个已经存在的编程语言里非常少有对现有的生态系统起重大影响的新特性.Lambda表达式对于Java语言就是这样的意义的存在.简单来说,Lambda表达式提供了便利的方式去创建一个匿名的功能.提供了一 ...

  2. C#3.0 Lamdba表达式与表达式树

    Lamdba表达式与表达式树 Lamdba表达式 C#2.0中的匿名方法使得创建委托变得简单起来,甚至想不到还有什么方式可以更加的简化,而C#3.0中的lamdba则给了我们答案. lamdba的行为 ...

  3. java8中对lamdba表达式方法参数传递时,方法重载之后的类型推断

    java8中可以向方法传递一个lamdba表达式,今天看书关于类型推断碰到一个问题: 这个问题我实际操作了一下:得出结论 如果是只有一个方法的情况下,方法参数使用lamdba表达式的时候是不需要写类型 ...

  4. C#高级编程9-第8章 委托、lamdba表达式和事件

    委托.lamdba表达式和事件 1.引用方法 函数指针是一个指向内存位置的指针,不是类型安全的.无法判断实际指向.参数和返回类型也无从知晓..NET委托是类型安全的.定义了返回类型和参数类型,不仅包含 ...

  5. Java8 Lamdba表达式 002

    本篇将讲述lamdba表达式的排序,本例包括一个Player对象的集合[稍后定义],通过每一个player的分数高低对列表的player进行排序.类定义001例如以下 public class Sor ...

  6. Java8 新特性 Lamdba表达式

    Lamdba 表达式为什么出现   Java8是自java延生以来最大的改变,他允许java中的方法和函数成为一等公民(可以在方法间传递),所以就应运而出现了Lamdba表达式,他可以将表达式传递给另 ...

  7. Lamdba表达式的代码使用讲解

    public class Lambda{ public static void main(String[] args) { repeat(10, (i)->System.out.print(&q ...

  8. Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询

    在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...

  9. c#Lamdba表达式与托付

    介绍: "Lambda表达式"(lambda expression)是一个匿名函数,在C#3.0中引入了lambda表达式,它是对匿名函数的一种简化,能够包括表达式和语句,而且可用 ...

  10. 第8章 委托、Lamdba表达式和事件

    本章内容: 委托    Lambda表达式 事件 8.1.3   简单的委托示例 首先定义一个类MathOperations,它有两个静态方法,对double类型的值执行两个操作. public cl ...

随机推荐

  1. Shell 基础教程

    一个比较好的shell基础教程: http://www.runoob.com/linux/linux-shell.html

  2. k64 datasheet学习笔记21--Direct Memory Access Multiplexer (DMAMUX)

    0.前言 本章主要介绍DMA MUX的相关内容 1.简介 1.1 概述 用来路由DMA源到16路DMA通道: 1.2 特性 1.52个外设slot和10个常开slot可以路由到16路DMA通道 2.1 ...

  3. css布局中的百分比布局

    1.在说到百分比是前,先简单了解下基本的单位 英寸(inch) :in 1 in=2.54cm厘米(centimeter):cm毫米(millimeter):mm磅(point):pt 1pt=1/7 ...

  4. windows配置Erlang环境

    1.说明 1.1 操作系统 win10x64 1.2 Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并 ...

  5. div的onclick事件怎么失效了?

    1 前言 div是用拼接复制到另一个个div上,div的onclick事件中方法名为close,导致onclick=“close()” 触发不了,然后换了名称就可以了 2 代码 <!DOCTYP ...

  6. Python 爬虫 某迅漫画 selemiun+plantomJS

    目标站点需求分析 爬取某迅漫画到本地 涉及的库 selenium, PhantomJS time,urllib.request,os,random 模拟滑动窗口,获取完整网页 保存到文件中 获取本地h ...

  7. vue 3.0

    参照网址: https://blog.csdn.net/qq_36407748/article/details/80739787

  8. 忘记加入spring-aop-4.3.16.RELEASE.jar出错

    出错代码: java.lang.NoClassDefFoundError: org/springframework/aop/framework/AopProxyUtils at org.springf ...

  9. Jmeter_24个常用函数

    JMeter提供了很多函数,如果能够熟练使用,可以为脚本带来很多方便. JMeter函数是一种特殊值,可用于除测试计划外的任何组件. 函数调用的格式如下所示:${__functionName(var1 ...

  10. MySQL入门命令

    SQL(Structured Query Language) SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 ...