Lambda表达式及相关练习
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新特性视频教程》
视频地址:
Lambda表达式及相关练习的更多相关文章
- JDK8新特性(一) Lambda表达式及相关特性
函数式接口 函数式接口是1.8中的新特性,他不属于新语法,更像是一种规范 面向对象接口复习 在这里先回顾一下面向对象的接口,创建接口的关键字为interface,这里创建一个日志接口: public ...
- lambda表达式与方法重载问题
笔者之前在学习Java8新特性的时候,最吸引我的就是lambda表达式,它无疑为Java函数编程提供了强有力的支持.lambda表达式的使用方法很简单,下面给出最简单的用法. // Interface ...
- C++实现委托机制(三)——lambda表达式封装
C++.引言: 其实原本没打算写这一章的,不过最后想了想,嗯还是把lambda表达式也一并封装进去,让这个委托也适应lambda表达式的注册.不过在之前还是需要先了解lamb ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- Linq表达式、Lambda表达式你更喜欢哪个?
什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...
- 释放Android的函数式能量(I):Kotlin语言的Lambda表达式
原文标题:Unleash functional power on Android (I): Kotlin lambdas 原文链接:http://antonioleiva.com/operator-o ...
- Linq表达式和Lambda表达式用法对比
什么是Linq表达式?什么是Lambda表达式?前一段时间用到这个只是,在网上也没找到比较简单明了的方法,今天就整理了一下相关知识,有空了再仔细研究研究 public Program() { List ...
- 委托、Lambda表达式和事件
1.1 引用方法 委托是寻址方法的 .NET 版本.委托是类型安全的类.它定义了返回类型和参数的类型.委托类不仅包含对方法的引用,也可以包含对多个方法的引用. Lambda 表达式 ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
随机推荐
- Vue 面试题总结
1. Vue 框架的优点是什么? (1)轻量级框架:只关注视图层,大小只有几十Kb: (2)简单易学:文档通顺清晰,语法简单: (3)数据双向绑定,数据视图结构分离,仅需操作数据即可完 ...
- 基于http的netty demo
1.引入netty的pom <dependency> <groupId>io.netty</groupId> <artifactId>netty-all ...
- 深入理解Kafka必知必会(1)
Kafka的用途有哪些?使用场景如何? 消息系统: Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦.冗余存储.流量削峰.缓冲.异步通信.扩展性.可恢复性等功能.与此同时,Kafka 还 ...
- spark常用提交任务的基本的参数配置
#!/bin/bash #队列名 根据yarn的队列提交 realtime_queue=root #提交的任务名 my_job_name="OrderQZ" spark-shell ...
- promise引用自吕大豹
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...
- 8. 格式化器大一统 -- Spring的Formatter抽象
目录 ✍前言 本文提纲 版本约定 ✍正文 Printer&Parser Formatter 时间日期格式化 Date类型 代码示例 JSR 310类型 整合DateTimeFormatter ...
- SonarQube学习(五)- SonarQube之自定义规则使用
一.前言 古人云:"欲速则不达",最近真的是深有体会.学习也是如此,不是一件着急的事,越是着急越不会. 就拿SonarQube来说吧,去年年末就想学来着,但是想着想着就搁置了,有时 ...
- 【Java基础】多线程
多线程 基本概念 程序(program)是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process)是程序的一次执行过程,或是正在运行的一个程序.是一个动态 ...
- 【Java基础】常用类
常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...
- --safe-user-create
此参数如果启用,用户将不能用grant语句创建新用户,除非用户有mysql数据库中user表的insert权限, ./mysqld_safe --safe-user-create & 用-- ...