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. python之scrapy框架基础搭建

    一.创建工程 #在命令行输入scrapy startproject xxx #创建项目 二.写item文件 #写需要爬取的字段名称 name = scrapy.Field() #例 三.进入spide ...

  2. 高效实用linux命令之-history

    History(历史)命令用法 15 例 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个 ...

  3. JAVA编程能力提升学习图

    阿里大神毕玄整理的关于进阶JAVA的学习体系,知道下...

  4. Facetoobject_encapsulation

    面向对象程序设计思想 一.思想 处处皆对象. 当提到某一功能时,首先应该想有没有实现该功能的对象,有则调用,没有则创建类.当提到数据时,应该想到属于哪个对象. 1.求1~n的累加和 public cl ...

  5. PHP 判断手机端还是web端

    function isMobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) re ...

  6. 值得推荐的C#不同版本语言特性

    C#语言在不断地版本升级中,为我们提供了很多新的语言特性.其中,有很多使用的语言特性,我觉得在实际开发中用起来很方便,能够简化我们的代码,增强可读性,提高开发效率. 小编不才,在这里给大家整理了一些实 ...

  7. 【剑指 Offer】03.数组中重复的数字

    题目描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中 ...

  8. at定时任务

    1)at是只执行一次,执行完后任务删除.at的守护进程atd会以后台模式运行,检查作业队列来运行.2)默认 atd每60秒巡逻一次,有作业时候,检查作业时间,如果和当前时间一样,就执行任务3)在使用a ...

  9. Linux学习笔记 | docker基本命令

    Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例,可以将其启动.开始.停止.删除.而这些容器都是相 ...

  10. DHCP最佳实践(二)

    这是Windows DHCP最佳实践和技巧的最终指南. 如果您有任何最佳做法或技巧,请在下面的评论中发布它们. 在本指南(二)中,我将分享以下DHCP最佳实践和技巧. 从DHCP作用域中排除IP 了解 ...