JDK8新特性02 Lambda表达式02_Lambda语法规则
//函数式接口:只有一个抽象方法的接口称为函数式接口。 可以使用注解 @FunctionalInterface 修饰
@FunctionalInterface
public interface MyFun {public Integer getValue(Integer num);
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;import org.junit.Test;/** 一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符* 箭头操作符将 Lambda 表达式拆分成两部分:* * 左侧:Lambda 表达式的参数列表* 右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体* * 语法格式一:无参数,无返回值* () -> System.out.println("Hello Lambda!");* * 语法格式二:有一个参数,并且无返回值* (x) -> System.out.println(x)* * 语法格式三:若只有一个参数,小括号可以省略不写* x -> System.out.println(x)* * 语法格式四:有两个以上的参数,有返回值,并且 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编译器通过上下文推断出,数据类型,即“类型推断”* (Integer x, Integer y) -> Integer.compare(x, y);* * 上联:左右遇一括号省* 下联:左侧推断类型省* 横批:能省则省* * 二、Lambda 表达式需要“函数式接口”的支持* 函数式接口:接口中只有一个抽象方法的接口,称为函数式接口。 可以使用注解 @FunctionalInterface 修饰* 可以检查是否是函数式接口*/
public class TestLambda2 {@Testpublic void test1(){int num = 0;//jdk 1.7 前,必须是 finalRunnable r = new Runnable() {@Overridepublic void run() {System.out.println("Hello World!" + num);}};r.run();System.out.println("-------------------------------");Runnable r1 = () -> System.out.println("Hello Lambda!");r1.run();}@Testpublic void test2(){Consumer<String> con = x -> System.out.println(x);con.accept("我大尚硅谷威武!");}@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(){
// String[] strs;
// strs = {"aaa", "bbb", "ccc"};List<String> list = new ArrayList<>();show(new HashMap<>());}public void show(Map<String, Integer> map){}//需求:对一个数进行运算@Testpublic void test6(){Integer num = operation(100, (x) -> x * x);System.out.println(num);System.out.println(operation(200, (y) -> y + 200));}public Integer operation(Integer num, MyFun mf){return mf.getValue(num);}
}
JDK8新特性02 Lambda表达式02_Lambda语法规则相关推荐
- JDK8新特性之Lambda表达式
转载自 JDK8新特性之Lambda表达式 什么是Lambda表达式 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时,也会随之被编译成 ...
- JDK8新特性:Lambda表达式、Stream流、日期时间工具类
重要特性: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号. 可选的大括号:如果主体包含了一个语句,就不需要大括号. ...
- JDK8新特性之Lambda表达式和四大函数接口
在Java8中,加入了Lambda(Lambda expression),在使用它以前我们先聊聊为什么要加入Lamdba,使用它对于编程上有什么好处 一.Lamdba的作用 1.在我们需要把一些功能传 ...
- JDK8新特性之Lambda表达式、函数式接口
JDK8特性之Lamdba.函数式接口 1. 什么是Lambda表达式 ❓ ⭐️1.1入门
- 熟悉JDK8新特性,“Lambda表达式与函数式接口”
Hello,你好呀,我是大白(●-●) 菜单 lambda表达式 函数式接口 lambda表达式 lambda表达式可以看成匿名内部类的一个简洁写法 在语法上,Lambda表达式包含三个部分: 参数列 ...
- jdk8新特性:Lambda表达式简单测试
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JButton; ...
- java x=8_Java8新特性之lambda表达式
简介 Java8带来的新特性之一Lambda表达式,又称之为函数式编程,核心思想是将面向对象中的传递对象变为传递行为 语法 expression = (variable) -> anction ...
- 【java8新特性】——lambda表达式与函数式接口详解(一)
一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...
- java8新特性之lambda表达式--超级详细版本
java8新特性之lambda表达式 1.什么是lambda表达式?为什么用它? 2. 为什么Java需要lambda表达式? 3. lambda表达式的语法 4.函数式接口 4.1 什么是函数式接口 ...
- 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】
深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...
最新文章
- 分布式缓存的面试题8
- 最大并发连接数和最大会话数的区别
- mdadm,用命令做RAID
- SAP系统中设备管理模块的主要增强出口
- ubuntu linux版本升级,Ubuntu 系统版本升级
- 深度学习图片分类CNN模板
- redis基础类型:string
- vue router-link添加点击事件无效
- 基于麻雀搜索的PID神经网络解耦控制算法 - 附代码
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-003-四种方式获取DataSource...
- widows 10一直刷新问题
- 对接payjs的个人支付之微信扫码支付接口
- UBUNTU环境下编译的openwrt
- 哇咔咔!用Android手机控制电脑。
- 各个厂商手机不打印log日志的解决方法
- Android 中Native方法是怎样调用的
- Java设计模式——备忘录模式
- oracle cast 用法
- 《Effective C++ 3th》——继承与面向对象设计
- calcite教程【中文版】