Lambda表达式想必大家都不陌生,jdk8的新特性,Lambda表达式需要函数式接口的支持,所谓函数式接口就是只有一个方法的接口,可以通过注解@FunctionalInterface来检查该接口是否是函数式接口,如下图左就是函数式接口,而右则不是。

下面来一个我们比较常见的例子,线程的例子,我们创建一个线程,一般会去重写Runnable接口,原始的方法就是用匿名内部类,现在有了Lambda表达式,就显得更加简便

首先以创建一个线程为例子

package com.zhiying;public class MyTest {public static void main(String[] args) {//传统的方法new Thread(new Runnable() {@Overridepublic void run() {System.out.println("hello world");}}).start();// 用Lambda表达式一new Thread(() -> System.out.println("hello")).start();// 用Lambda表达式二new Thread(() -> {System.out.println("hello");}).start();}
}

下面进行Lambda的详细介绍

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

package com.zhiying;@FunctionalInterface
public interface Hello {public void add();
}
package com.zhiying;public class MyTest {public static void main(String[] args) {Hello hello1 = () -> {System.out.println("hello world");};hello1.add();// 只有一句的时候可以省略{}Hello hello2 = () -> System.out.println("hello world");hello2.add();}
}

格式二:有一参数,无返回值

package com.zhiying;@FunctionalInterface
public interface Hello {public void add(int a);
}
package com.zhiying;public class MyTest {public static void main(String[] args) {// 只有一个参数的时候,()可以省Hello hello1 = (a) -> System.out.println(a);hello1.add(2);Hello hello2 = a -> System.out.println(a);hello2.add(3);}
}

格式三:有多参数,无返回值

package com.zhiying;@FunctionalInterface
public interface Hello {public void add(int a,int b);
}
package com.zhiying;public class MyTest {public static void main(String[] args) {Hello hello = (a,b) -> System.out.println(a + b);hello.add(1,2);}
}

格式四:有返回值

package com.zhiying;@FunctionalInterface
public interface Hello {public int add(int a,int b);
}
package com.zhiying;public class MyTest {public static void main(String[] args) {Hello hello1 = (a,b) -> {System.out.println("hello world");return a + b;};System.out.println(hello1.add(1,2));// 如果只有一条返回语句,return和{}可以都省略Hello hello2 = (a,b) ->  a + b;System.out.println(hello1.add(2,2));}
}

Java中Lambda表达式相关推荐

  1. Java中Lambda表达式和stream的使用

    Java中Lambda表达式和stream的使用 转自 [*https://www.cnblogs.com/franson-2016/p/5593080.html*] 简介 (译者注:虽然看着很先进, ...

  2. Java中Lambda表达式使用及详解

    Java中Lambda表达式使用及详解 前言 一.Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中.使 ...

  3. Java中Lambda表达式的使用

    目录 1 简介 2  Lambda表达式的组成 2.1  Lambda表达式的函数式接口 2.2 对接口的要求 3 Lambda使用 3.1 基本使用 3.2 使用Lambdas和Streams 4 ...

  4. Java中lambda表达式去重_JAVA8中Lambda和Stream

    Java8于2014年3月份发布,其主要更新的特性有:函数式接口.Lambda 表达式.集合的流式操作.注解的更新.安全性的增强.IO\NIO 的改进.完善的全球化功能等,本文将介绍Lambda表达式 ...

  5. Java中Lambda表达式的使用(转)

    https://www.cnblogs.com/franson-2016/p/5593080.html 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖" ...

  6. Java中Lambda表达式使用前提及省略规则

    Lambda标准格式 Lambda格式由3个部分组成:      参数      箭头      代码 Lambda表达式的标准格式为: (参数类型 参数名称) ‐> { 代码语句 } 格式说明 ...

  7. java中lambda表达式的应用

    lambda表达式 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法) 使用 Lambda 表达式可以使代码变的更加简洁紧凑. 语法格式: (parameters) -> ex ...

  8. Java中Lambda表达式与方法引用和构造器引用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/cjhc666/article/deta ...

  9. java lambda 变量_为什么Java中lambda表达式不能改变外部变量的值,也不能定义自己的同名的本地变量呢?...

    你问的问题在 Project Lambda 的概述文档上已经解释了,这都属于设计上的取舍. 不能改变外部变量的值是因为线程安全问题.当然这可能不是唯一原因,可能有其他考虑,但文档上清清楚楚说明了:Wh ...

最新文章

  1. (详细)Hibernate框架的搭建,Hibernate的CRUD操作(一)
  2. python的基本结构_python基础--结构篇
  3. 虚拟化简化数据中心管理
  4. php savepath,php中session_save_path另外一种用法
  5. Go语言学习Day06
  6. 【git系列】提交新的PR-撤销git rebase
  7. 【java学习之路】(java SE篇)001.java初识
  8. HTTP Get POST方式请求数据
  9. 30+免费快速启动工具软件下载
  10. FPGA-09FPGA-RGB TFT-LCD显示
  11. 快递面单打印报错:“print selected is not valid” 解决方案
  12. 监考噩梦!!!(线上考试)
  13. 云服务器BCc怎么创建php环境,百度智能云服务器BCC如何升级wordpress的php环境
  14. HTML5,CSS,JS前端常见知识面试题
  15. ArcEngine 鹰眼功能C#实现
  16. 面向对象:怪蜀黍PK奥特曼
  17. 关于浏览器的几个问题
  18. ABBYY FineReader PDF15下载安装教程
  19. Vue实例与数据绑定
  20. 微型 Python Web 框架: Bottle

热门文章

  1. 【读书笔记】-串指令备注
  2. 2010——满地遍是网页防篡改和WAF
  3. javascript 页面刷新
  4. 根据[user]查找所有者为[user]的文件列表
  5. cratedb导入json文件
  6. C语言__LINE__实现原理
  7. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  8. pip install 报错 Error: Cannot uninstall ‘pyparsing‘ 的解决方法
  9. 抽取JDBC工具类:JDBCUtils
  10. raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)