Java8中的Lambda表达式
来源:互联网 发布:淘宝小号怎么申请2017 编辑:程序博客网 时间:2024/06/10 18:15
一.简述
Lambda表达式本是属于JDK1.7的Lambda项目的内容.在JDK1.7开发琪琪,Sun公司由于相继在技术竞争和商业竞争中都深陷泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动JDK1.7的研发工作按正常进行.为了尽快结束JDK1.7长期"跳票"的问题,Oracle公司收购Sun公司后不就便宣布将实行"Plan B","Plan B"把不能按时完成的Lambda项目,Jigsaw项目和Coin项目的部分改进延迟到JDK1.8之中(更多详细的请见Java发展史).所以Lambda的功能才在JDK1.8中发布.Lambda表达式基于数学中的λ演算得名,但是和λ演算的关系又相差甚远.有点像原子弹和质能方程的关系,差别其实还是挺大的.什么的Lambda表达式呢?简答来说Lambda表达式就是匿名方法.匿名方法的概念类似于Anonymous类的不同之处在于它实现了一个函数式接口.函数式接口是Java8中的新接口概念.函数式接口只能声明一个抽象方法.函数式接口详细见:
http://blog.csdn.net/hspingcc/article/details/73336329
Lambda表达式运行程序员以简洁的方式传递代码,从而使代码更加的简洁.
二. Lambda表达式语法
Lambda表达式包含: a.参数列表 b.剪头符号(->) c.正文的Lambda语句Lambda表达式的语法: (参数)->{正文语句;}
三.Lambda表达式的使用
1.lambda表达式可以有零个或多个参数
例1:
() -> {System.out.println("Hello World");}
例2:
// 接收两个int型的x,y,返回他们的和(int x, int y) -> {return x+y;}
2.如果参数的类型可以由编译器决定,那么我们可以忽略在lambda表达式中添加它们。
例1:
(int x, int y) -> {return x+y;} // 带有参数类型(x,y) -> {return x+y;}; // 忽略参数类型
3.如果只有一个参数。参数的括号可以省略
例1:
x -> {return x+10;}String s -> System.out.println(s)
4.如果body只有一个表达式,那么return关键字和大括号可以省略
(int x, int y) -> x + y
如果省略返回类型的参数,则编译器将确定默认参数类型。
5.Lambda可以有空参数和空正文语句
例1:
() -> {return “Hello World”;} // 空参数()->{} // 空参数以及空体
四.调用Lambda表达式
Lambda表达式就像一个方法一样被调用和执行.
对于调用Lambda表达式,我们应该创建一个函数式接口.
例1:
public class MyFuntionalInterface { interface MyInterface{ void hello(); } public static void main(String[] args) { MyInterface infVar = () -> {System.out.println("Hello World");}; infVar.hello(); }}
五.总结
结合函数式接口章节阅读学习说个题外话,看到有人说java的Lambda表达式落后C# 8年才出现,并不是java语言落后所致,而是Sun公司的衰落而至.
阅读全文
0 0
- java8中的Lambda表达式
- Java8中的Lambda表达式
- Java8集合中的Lambda表达式
- Java8中的Lambda表达式概述
- java8 lambda表达式在集合中的应用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- JAVA8之lambda表达式详解,及stream中的lambda使用
- Java8 Lambda表达式教程
- Java8 Lambda表达式教程
- Java8: Lambda表达式语法
- java8 Lambda表达式
- Java8 Lambda表达式教程
- Java8 Lambda表达式
- java8 Lambda表达式
- Java8 Lambda表达式教程
- Java8 Lambda表达式教程
- this 关键字的用法
- Java/JavaWeb/开发环境介绍
- HDU 6060 RXD and dividing (最小斯坦纳树)
- Ubuntu17.04国内源
- react-natvie 开发一个简单的app 流程
- Java8中的Lambda表达式
- ARKit从入门到精通(10)-ARKit让飞机绕着你飞起来
- 基于jquery的组件开发-mask
- DELETE语句
- ubuntu linux ssh 操作记录
- 网络流之sap算法
- phpexcelreader在线显示excel
- 【最大子序列和 首尾相连】ykc想吃好吃的
- HDFS之Qurom Journal Manager(QJM)实现机制分析