Java8 新特性lambda表达式(一)初始
本篇参考Richard Warburton的 java8 Lambdas :Functional Programming for the Masses
学习lambda表达式之前,需要知道什么是函数式编程。
函数式编程不尽相同,但是其核心是,使用不可变的值和函数,函数对一个值进行处理,映射返回成另一个值的过程。
示例1:
hangmeimei.speech(new speak(){
public void speechs(Parameter parameter){
System.out.println("演讲");
}
})
上面的代码核心就是韩梅梅演讲说了一句话,但是因为内部内的样板看起来很是繁琐
使用lambda表达式:hangmeimei.speech(parameter ->System.out.println("演讲"));
parameter与上面的参数名称一样。在使用内部内时候,我们需要显示的将参数的类型写出来,而使用lambda表达式则可以省略参数的类型Parameter。
这是因为javac更具程序的上下文,也就是方法的签名在后台推出了参数parameter的类型Parameter。
尽管与之前相比,lambda表达式中的参数需要的样板代码很少,但是Java8依然是静态类型语言。为了怎加可读性并且迁就我们的习惯,声明参数的时候也可以包括类型的信息,而且有时编译器不一定能根据上下文推出参数的类型!
lambda 表达式除了基本形式之外,还有一下几种变体。
1、Runable noA =()->System.out.println("演讲");
上式中所示的lambda表达式没有参数,使用空()表示没有参数。该lambda表达式实现了Runable接口,该接口也只有一个run方法,且run没有参数,返回类型是void。
2、Dog noA=event ->System.out.println("演讲");
该lambda表达式含有一个参数,可以省略括号。
3、Runable noA()->{
System.out.println("演讲");
System.out.println("演讲");
}
如上所示,lambda表达式的主体不仅可以是一个表达式,也可以是一个代码块。使用大括号括起来。
4、Round add=(x,y)->x+y;
lambda表达式也可以包含多个参数,这个代码不是把两个数相加,而是创建了加法函数,用来计算两个数相加的结果。
Java8 新特性lambda表达式(一)初始的更多相关文章
- Java8新特性-Lambda表达式是什么?
目录 前言 匿名内部类 函数式接口 和 Lambda表达式语法 实现函数式接口并使用Lambda表达式: 所以Lambda表达式是什么? 实战应用 总结 前言 Java8新特性-Lambda表达式,好 ...
- 乐字节-Java8新特性-Lambda表达式
上一篇文章我们了解了Java8新特性-接口默认方法,接下来我们聊一聊Java8新特性之Lambda表达式. Lambda表达式(也称为闭包),它允许我们将函数当成参数传递给某个方法,或者把代码本身当作 ...
- java8新特性——Lambda表达式
上文中简单介绍了一下java8得一些新特性,与优点,也是为本次学习java8新特性制定一个学习的方向,后面几篇会根据上文中得新特性一一展开学习.本文就从java8新特性中比较重要的Lambda表达式开 ...
- Java8新特性 - Lambda表达式 - 基本知识
A lambda expression is an unnamed block of code (or an unnamed function) with a list of formal param ...
- java8新特性-lambda表达式和stream API的简单使用
一.为什么使用lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...
- Java8新特性: lambda 表达式介绍
一.lambda 表达式介绍 lambda 表达式是 Java 8 的一个新特性,可以取代大部分的匿名内部类,简化了匿名委托的使用,让你让代码更加简洁,优雅. 比较官方的定义是这样的: lambda ...
- Java8新特性——Lambda 表达式
Lambda 表达式 Lambda 表达式的实质属于函数式编程. 语法格式为:(parameters) -> expression ...
- Java8新特性-Lambda表达式
1. 什么是Lambda表达式? Lambda表达式就是可以把函数作为参数传递,或者说把代码作为数据传递给函数. 2. Lambda表达式的语法格式 基本语法格式如下: 基本语法下多个变体的说明: ...
- Java8新特性——lambda表达式.(案例:词频统计)
需求:读入一个文本文件,确定所有单词的使用频率并从高到低排序,打印出所有单词及其频率的排序列表 先用传统方法解: package cn._1.wordfrequency; import java.ut ...
随机推荐
- Vue生命周期,我奶奶看了都懂了
最近一直在学习Vue,而vue生命周期是我们不可能绕开的一个很核心的知识点,今天来简单的梳理一下大概的内容. 一.钩子函数 在一开始学习的时候,总有钩子函数这个名词冒出来,而且在vue官网文档中也频繁 ...
- Solon详解(六)- 定制业务级别的验证注解
在业务的实现过程中,尤其是对外接口开发,我们需要对请求进行大量的验证并返回错误状态码和描述.lombok 框架有很多很赞的注解,但是人家是throw一个异常,这与有些需求不一定能匹配. 该文将基于So ...
- 第六篇scrum冲刺
一. 站立式会议 1.会议照片 2. 项目进展 团队成员 昨日完成任务 今日计划任务 吴茂平 新消息提醒功能设计 实现开发新消息提醒功能 陈忠明 歌曲批量下载压缩包 歌手收藏功能 吴尚谦 设计下载 ...
- 如何为指定python解释器安装pip
有时候我们通常会有很多python解释器,例如python2.python3.python(Anaconda). 参考链接:https://www.cnblogs.com/michaelcjl/p/1 ...
- pandas 数据库数据的读取
绝大多数公司都会选择将数据存入数据库中,因为数据库既可以存放海量数据,又可以非常便捷地实现数据的查询.下面以MySQL和SQL Server为例,来练习Pandas模块和 对应的数据库模块. 首先需要 ...
- .sync 修饰符
vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定 //写一个(子)组件Child.vue <template> <div c ...
- Sign in with Apple 流程总结
流程图 相关说明 UserId 与用户的 Apple Id 一一对应.在同一个开发帐号下的所有 app 里,获取到的值都一样. IdentityToken identityToken 是一个 Json ...
- vue前端获取env中的常量
process.env.常量名 如:process.env.MIX_APP_URL
- android 数据绑定(4)实用特性及疑惑:使用控件、格式化@string/xxx、对象传递、双向数据绑定
1.在布局内使用其它控件 1.1 效果 箭头所指3个控件的内容随输入框内容而变化. 1.2 示例代码 <?xml version="1.0" encoding="u ...
- 【转】Mac下Eclipse快捷键
http://blog.sina.com.cn/s/blog_677089db01019jgh.html Command + O:显示大纲Command + 1:快速修复Command + D:删除当 ...