/*** * 一、Lambda 表达式的基础语法:* Java8中引入了要给新的操作符 “->” 该操作符称作箭头操作符 或 Lambda操作符* 箭头操作符将Lambda拆分成两部分: * 左侧:Lambda表达式参数列表(对应函数接口中抽象方法的参数列表)* 右侧:Lambda表达式中所需要执行的功能,即Lambda体(对应函数接口中抽象方法实现的功能) Lambda可以看作对函数接口的实现。* * 根据函数接口抽象方法的情况 * 语法格式一:无参数,无返回值 *              () -> System.out.println("Hello Lambda!");* * 语法格式二:有一个参数,无返回值 *         (t) -> System.out.println(t);* * 语法格式三:若只有一个参数,小括号可以省略不写 *            t -> System.out.println(t);** 语法格式四:有两个以上的参数,有返回值,并且Lambda体中有多条语句*      Comparator<Integer> com = (x, y) -> {*            System.out.println("函数式接口");*         return Integer.compare(x, y);*      };** 语法格式五:若Lambda中只有一条语句,return和大括号都可以省略不写 *         Comparator<Integer> com = (x,y) -> Integer.compare(x, y);* * 语法格式六:Lambda的参数列表数据类型可以省略不写,因为JVM编译器可以根据上下文推断出,数据类型,即“类型推断”* * 总结: * 上联:左右遇一括号省 * 下联:左侧推断类型省 * 横批:能省则省* * 二、Lambda表达式需要“函数式接口”的支持 * 函数式接口:* 接口中只有一个抽象方法的接口,称为函数式接口。可以使用注解@FunctionInterfa修饰 :可以检查是否是函数式接口。*/
public class TestLambda2 {@Testpublic void test1() {int num = 0;// jdk7 之前,必须写finalRunnable r = new Runnable() {@Overridepublic void run() {System.out.println("hello world!" + num);}};new Thread(r).start();Runnable r1 = () -> System.out.println("hello lambda!" + num);new Thread(r1).start();}@Testpublic void test2() {Consumer<String> con = (t) -> System.out.println(t);con.accept("java nb");}@Testpublic void test3() {Comparator<Integer> com = (x, y) -> {System.out.println("函数式接口");return Integer.compare(x, y);};}@Testpublic void test4() {Comparator<Integer> com = (x, y) -> Integer.compare(x, y);}// 需求;对一个数进行运算@Testpublic void test5() {Integer num1 = operation(100, x -> x++);Integer num2 = operation(100, x -> x*x);System.out.println(num1 + "---" + num2);}public Integer operation(Integer num, MyFun fun) {return fun.getValue(num);}}
@FunctionalInterface
public interface MyFun {public Integer getValue(Integer num);}

Java 8 Lambda表达式基础语法相关推荐

  1. 10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...

  2. Java 8 Lambda表达式10个示例【存】

    PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...

  3. Java基础-Lambda表达式基础练习

    Lambda表达式基础练习 Lambda表达式得格式:(形式参数)->{代码块} Lambda表达式使用前提: 有一个接口 接口中有且仅有一个抽象方法 练习1:定义一个接口(Eatable),里 ...

  4. Java 8 Lambda表达式官方入门教程(包括Lambda表达式介绍和语法)

    Java8做出了比较大的更新,支持了很多新特性,Java8引入的Lambda表达式这一特性,使Java8支持函数式编程,目前网上有较多的教程,本文整理了来自Oralce官方提供的教程. Lambda表 ...

  5. 变量不合法的表达式JAVA_Java8中lambda表达式的语法,别人都会的,你还不会吗?「一」...

    函数式编程 函数式编程是一种编程方式,它将电脑运算视为函数的计算.函数编程语言最重要的基础是λ演算(lambda calculus),λ演算的函数可以接受函数当作输入(参数)和输出(返回值). 函数式 ...

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

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

  7. 深入理解Java 8 Lambda表达式(Oracle官方文档版)

    Java 8 问世三年了,9马上也要问世了,所以,嗯,我要开始学8了-- 官方文档:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdae ...

  8. Java 8 Lambda 表达式详解

    版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...

  9. 反映参数名称:滥用C#lambda表达式还是语法亮度?

    我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退: .Attributes(style => "width:100%") 上面的语法将生成 ...

最新文章

  1. mysql 计算排名,生成排行榜
  2. 程序员的小天地:注释中的快乐
  3. 跨域 (3) window.name
  4. IE 8兼容小妙招~~
  5. linux防火墙开启某端口命令行,linux上防火墙 开启某个端口
  6. 前端学习(1947)vue之电商管理系统电商系统之使用自定义模板渲染
  7. java访问mongodb_Java中获取MongoDB连接的方法详解
  8. C#窗体控件-单选按钮控件RadioButton
  9. 写出杨辉三角_认识杨辉三角
  10. Hibernate原生sqlquery报错:java.math.BigDecimal cannot be cast to java.lang.Int
  11. How Touch Screen Monitors Work
  12. Atitit Atitit 客户常见技术问题的解答.docx
  13. 将手机投屏到电脑以及用手机实现对电脑的控制
  14. Unity 一种更为简洁明了的环绕相机方案
  15. android照片批量上传照片,一键批量上传手机照片到QQ相册功能 节省手机流量
  16. 微积分——傅里叶级数
  17. 安装mediawiki维基百科
  18. args.verbose 的意思
  19. 什么蓝牙耳机好用?2022蓝牙耳机排行榜
  20. 7款必须下载的PC端软件,必看

热门文章

  1. 金九银十专供 | 175 道 Go 工程师必考面试题 + 详细解答
  2. 【4】SCN-Feign远程调用
  3. 关于数据权限的几个问题
  4. Eureka Server集群同步
  5. 关于Zuul的几个问题
  6. 关于Feign的几个问题
  7. Fusion Upload组件 对接 阿里云OSS/七牛/又拍
  8. SpringBoot系列: 单元测试2
  9. Xilinx Zynq-7000 嵌入式系统设计与实现
  10. 你的手机支持5Gwifi吗?5G上网真的很快吗?