Java 8 Lambda表达式基础语法
/*** * 一、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表达式基础语法相关推荐
- 10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在J ...
- Java 8 Lambda表达式10个示例【存】
PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...
- Java基础-Lambda表达式基础练习
Lambda表达式基础练习 Lambda表达式得格式:(形式参数)->{代码块} Lambda表达式使用前提: 有一个接口 接口中有且仅有一个抽象方法 练习1:定义一个接口(Eatable),里 ...
- Java 8 Lambda表达式官方入门教程(包括Lambda表达式介绍和语法)
Java8做出了比较大的更新,支持了很多新特性,Java8引入的Lambda表达式这一特性,使Java8支持函数式编程,目前网上有较多的教程,本文整理了来自Oralce官方提供的教程. Lambda表 ...
- 变量不合法的表达式JAVA_Java8中lambda表达式的语法,别人都会的,你还不会吗?「一」...
函数式编程 函数式编程是一种编程方式,它将电脑运算视为函数的计算.函数编程语言最重要的基础是λ演算(lambda calculus),λ演算的函数可以接受函数当作输入(参数)和输出(返回值). 函数式 ...
- Java中Lambda表达式使用及详解
Java中Lambda表达式使用及详解 前言 一.Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中.使 ...
- 深入理解Java 8 Lambda表达式(Oracle官方文档版)
Java 8 问世三年了,9马上也要问世了,所以,嗯,我要开始学8了-- 官方文档:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdae ...
- Java 8 Lambda 表达式详解
版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009186509 1. 引言 在 Java 8 以前,若我们想要把某些功能传递给某 ...
- 反映参数名称:滥用C#lambda表达式还是语法亮度?
我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退: .Attributes(style => "width:100%") 上面的语法将生成 ...
最新文章
- mysql 计算排名,生成排行榜
- 程序员的小天地:注释中的快乐
- 跨域 (3) window.name
- IE 8兼容小妙招~~
- linux防火墙开启某端口命令行,linux上防火墙 开启某个端口
- 前端学习(1947)vue之电商管理系统电商系统之使用自定义模板渲染
- java访问mongodb_Java中获取MongoDB连接的方法详解
- C#窗体控件-单选按钮控件RadioButton
- 写出杨辉三角_认识杨辉三角
- Hibernate原生sqlquery报错:java.math.BigDecimal cannot be cast to java.lang.Int
- How Touch Screen Monitors Work
- Atitit Atitit 客户常见技术问题的解答.docx
- 将手机投屏到电脑以及用手机实现对电脑的控制
- Unity 一种更为简洁明了的环绕相机方案
- android照片批量上传照片,一键批量上传手机照片到QQ相册功能 节省手机流量
- 微积分——傅里叶级数
- 安装mediawiki维基百科
- args.verbose 的意思
- 什么蓝牙耳机好用?2022蓝牙耳机排行榜
- 7款必须下载的PC端软件,必看