Lambda 表达式的基础语法:Java 8中引入了新的操作符 ” -> ” ;该操作符称为箭头操作符或Lambda操作符;

箭头操作符将Lambda表达式拆分为两部分:

  • 左侧:Lambda表达式的参数列表
  • 右侧:Lambda表达式中所需要执行的功能,即Lambda 体

所谓的Lambda就是对接口的实现

所谓的Lambda表达式左侧的参数列表对应的就是接口中抽象方法的参数列表

箭头操作符的右侧,需要对抽象方法实现的功能;对抽象方法的实现

Lambda需要函数式接口的支持;


语法格式一:无参数,无返回值

() -> System.out.println("Hello Lambda!");

输出:

局部匿名内部类;


语法格式二:有一个参数,并且无返回值;

(x) -> System.out.println(x);


语法格式三:若只有一个参数,小括号可以省略不写;

x -> System.out.println(x);


语法格式四:有两个以上的参数,有返回值,并且Lambda体中有多条语句

有多条语句,Lambda 必须使用 { }


语法格式五:若Lambda体中只有一条语句,return 和 大括号都可以省略不写;

相比较于语法格式四;


语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写;

因为JYM编译器可以通过上下文推断出数据类型,即“类型推断”;

(Integer x,Integer y) -> Integer.compare(x,y);

类型推断:JDK 1.8才可以使用,1.7不行;


总结:

  • 左右遇一括号省;

  • 左侧推断类型省;


Lambda 表达式需要“函数式接口”的支持

函数式接口:接口中只有一个抽象方法方法的接口,称为函数式接口;

可以使用注解 @FunctionalInterface 修饰

  • 可以检查是否是函数式接口;

测试:

定义一个接口;

测试类:

输出:


Lambda 练习

输出:


-!!!


-!!!

输出:


学习总结自百度视频《尚硅谷Java视频Java8新特性视频教程》

视频地址:

https://ke.qq.com/course/182668

Lambda表达式及相关练习的更多相关文章

  1. JDK8新特性(一) Lambda表达式及相关特性

    函数式接口 函数式接口是1.8中的新特性,他不属于新语法,更像是一种规范 面向对象接口复习 在这里先回顾一下面向对象的接口,创建接口的关键字为interface,这里创建一个日志接口: public ...

  2. lambda表达式与方法重载问题

    笔者之前在学习Java8新特性的时候,最吸引我的就是lambda表达式,它无疑为Java函数编程提供了强有力的支持.lambda表达式的使用方法很简单,下面给出最简单的用法. // Interface ...

  3. C++实现委托机制(三)——lambda表达式封装

    C++.引言:              其实原本没打算写这一章的,不过最后想了想,嗯还是把lambda表达式也一并封装进去,让这个委托也适应lambda表达式的注册.不过在之前还是需要先了解lamb ...

  4. java8中lambda表达式的应用,以及一些泛型相关

    语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...

  5. Linq表达式、Lambda表达式你更喜欢哪个?

    什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...

  6. 释放Android的函数式能量(I):Kotlin语言的Lambda表达式

    原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antonioleiva.com/operator-o ...

  7. Linq表达式和Lambda表达式用法对比

    什么是Linq表达式?什么是Lambda表达式?前一段时间用到这个只是,在网上也没找到比较简单明了的方法,今天就整理了一下相关知识,有空了再仔细研究研究 public Program() { List ...

  8. 委托、Lambda表达式和事件

    1.1 引用方法      委托是寻址方法的 .NET 版本.委托是类型安全的类.它定义了返回类型和参数的类型.委托类不仅包含对方法的引用,也可以包含对多个方法的引用.      Lambda 表达式 ...

  9. .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式

    开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...

随机推荐

  1. C语言I博客作业1

    1 .班级链接: https://edu.cnblogs.com/campus/zswxy/SE2020-3 2 .作业要求链接: https://edu.cnblogs.com/campus/zsw ...

  2. 本地显示Linux服务器的GUI程序

    如果我们UI自动化脚本跑在 Linux 服务器环境上,这个时候我们是看不到界面的,如果不使用浏览器的无头模式,这个时候我们的程序就跑不起来了,如何在服务器环境不使用浏览器的无头模式下进行UI测试呢,我 ...

  3. js实现页面消息滚动效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Atcoder abc187 F Close Group(动态规划)

    Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动 ...

  5. 原来大数据 Hadoop 是这样存储数据的

    HDFS概述 产生背景 随着数据量越来越大,在一个操作系统中存不下所有的数据.需要将这些数据分配到更多的操作系统中,带来的问题是多操作系统不方便管理和维护.需要一种系统来管理多台机器上的文件,这就是分 ...

  6. Spark学习进度10-DS&DF基础操作

    有类型操作 flatMap 通过 flatMap 可以将一条数据转为一个数组, 后再展开这个数组放入 Dataset val ds1=Seq("hello spark"," ...

  7. 【C++】《C++ Primer 》第六章

    第六章 函数 一.函数基础 函数定义:包括返回类型.函数名字和0个或者多个形参(parameter)组成的列表和函数体. 调用运算符:调用运算符的形式是一对圆括号 (),作用于一个表达式,该表达式是函 ...

  8. 为linux添加一块新硬盘并分区

    一---如何增加一块硬盘1:虚拟机添加硬盘2:分区3:格式化4:挂载5:设置可以自动挂载 1---设置里面 2---分区命令 fdisk /dev/sdb开始分区m显示命令列表p显示磁盘分区 同fdi ...

  9. 如何实现CentOS服务器的扩容??

    Linux的硬盘识别: 一般使用"fdisk -l"命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 2.启动 ...

  10. Nginx基础知识学习(安装/进程模型/事件处理机制/详细配置/定时切割日志)

    一.Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使用稳定版本. 2.上传Nginx到Linux服务器. 3.安装依赖环 ...