//函数式接口:只有一个抽象方法的接口称为函数式接口。 可以使用注解 @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语法规则相关推荐

  1. JDK8新特性之Lambda表达式

    转载自 JDK8新特性之Lambda表达式 什么是Lambda表达式 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时,也会随之被编译成 ...

  2. JDK8新特性:Lambda表达式、Stream流、日期时间工具类

    重要特性: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号. 可选的大括号:如果主体包含了一个语句,就不需要大括号. ...

  3. JDK8新特性之Lambda表达式和四大函数接口

    在Java8中,加入了Lambda(Lambda expression),在使用它以前我们先聊聊为什么要加入Lamdba,使用它对于编程上有什么好处 一.Lamdba的作用 1.在我们需要把一些功能传 ...

  4. JDK8新特性之Lambda表达式、函数式接口

    JDK8特性之Lamdba.函数式接口 1. 什么是Lambda表达式 ❓ ⭐️1.1入门

  5. 熟悉JDK8新特性,“Lambda表达式与函数式接口”

    Hello,你好呀,我是大白(●-●) 菜单 lambda表达式 函数式接口 lambda表达式 lambda表达式可以看成匿名内部类的一个简洁写法 在语法上,Lambda表达式包含三个部分: 参数列 ...

  6. jdk8新特性:Lambda表达式简单测试

    import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JButton; ...

  7. java x=8_Java8新特性之lambda表达式

    简介 Java8带来的新特性之一Lambda表达式,又称之为函数式编程,核心思想是将面向对象中的传递对象变为传递行为 语法 expression = (variable) -> anction ...

  8. 【java8新特性】——lambda表达式与函数式接口详解(一)

    一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...

  9. java8新特性之lambda表达式--超级详细版本

    java8新特性之lambda表达式 1.什么是lambda表达式?为什么用它? 2. 为什么Java需要lambda表达式? 3. lambda表达式的语法 4.函数式接口 4.1 什么是函数式接口 ...

  10. 深圳Java培训学习:Java8.0新特性之Lambda表达式--【千锋】

    深圳Java培训学习:Java8.0新特性之Lambda表达式–[千锋] 前言 Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.本篇文章,主要给大家介绍的是lambda表 ...

最新文章

  1. 分布式缓存的面试题8
  2. 最大并发连接数和最大会话数的区别
  3. mdadm,用命令做RAID
  4. SAP系统中设备管理模块的主要增强出口
  5. ubuntu linux版本升级,Ubuntu 系统版本升级
  6. 深度学习图片分类CNN模板
  7. redis基础类型:string
  8. vue router-link添加点击事件无效
  9. 基于麻雀搜索的PID神经网络解耦控制算法 - 附代码
  10. SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-003-四种方式获取DataSource...
  11. widows 10一直刷新问题
  12. 对接payjs的个人支付之微信扫码支付接口
  13. UBUNTU环境下编译的openwrt
  14. 哇咔咔!用Android手机控制电脑。
  15. 各个厂商手机不打印log日志的解决方法
  16. Android 中Native方法是怎样调用的
  17. Java设计模式——备忘录模式
  18. oracle cast 用法
  19. 《Effective C++ 3th》——继承与面向对象设计
  20. calcite教程【中文版】

热门文章

  1. python一维数组变三维数组_python numpy 一维数组转变为多维数组的实例
  2. 早期日语笔记----日语从入门到入土笔记
  3. oracle recover 状态,Oracle RAC undotbs表空间recover状态的恢复
  4. JS--统一社会信用代码校验
  5. 数字图像/视频处理MATLAB基本操作
  6. 我的2023届秋招之旅
  7. 如何使用虚拟专用网络登录网络设备?
  8. 【Matlab水果识别】形态学水果大小识别【含GUI源码 920期】
  9. ESP32 优化笔记(一)内存优化
  10. 秋风:教育部办学还是学校办学?