当前位置: 首页 > news >正文

【 java 8】Lambda 表达式

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:java 小白到高手的蜕变🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

目录

    • 📋 个人简介
  • 前言
    • 为什么使用 Lambda 表达式
    • Lambda 表达式举例
    • Lambda 表达式语法的使用
      • 语法格式一:无参,无返回值
      • 语法格式二:有一个参数,无返回值
      • 语法格式三:数据类型可以省略(类型推断)
      • 语法格式四:Lambda若只有一个参数,参数的小括号可以省略
      • 语法格式五:Lambda需要两个或者两个以上的参数,多条执行语句,并且可以有返回值
      • 语法格式六:当Lambda体只有一条语句时,return与大括号若有,都可以省略
    • Lambda 表达式的本质
  • 结语

前言

行文至此,java基础系列的文章更新的已经差不多了,现在开始会总结一些java8的新特性,然后向java web和框架方向靠近,并不断完善基础知识!

为什么使用 Lambda 表达式

Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 的语言表达能力得到了提升。

Lambda 表达式举例

public class Demo {public static void main(String[] args) {// 定制排序Comparator<Integer> integerComparator = new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare1 = integerComparator.compare(12,21);System.out.println(compare1);// 定制排序的Lambda表达式写法Comparator<Integer> com = (o1,o2) -> Integer.compare(o1,o2);int compare2 = com.compare(12,21);System.out.println(compare2);}
}

可以看到,定制排序转换为Lambda表达式后写法非常简单,只需一行代码,那么接下来我们就来学习一下Lambda的语法规则,即怎么样写Lambda表达式!

Lambda 表达式语法的使用

(o1,o2) -> Integer.compare(o1,o2);

-> :Lambda操作符或者箭头操作符
-> 左边:Lambda形参列表(其实就是接口中抽象方法的形参列表)
-> 右边:Lambda体:(其实就是重写的抽象方法的方法体)

语法格式一:无参,无返回值

// 语法格式一:无参,无返回值// 正常写法Runnable r1 = new Runnable(){@Overridepublic void run() {System.out.println("我是阿牛!");}};r1.run();// Lambda表达式写法Runnable r2 = () -> System.out.println("我是阿牛!");r2.run();

在这里插入图片描述

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

// 语法格式二:有一个参数,无返回值// 正常写法Consumer<String> con = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};con.accept("你好!");// Lambda表达式写法Consumer<String> con1 = (String s) ->{ System.out.println(s); };con1.accept("你好呀!");

语法格式三:数据类型可以省略(类型推断)

在上面语法格式二的基础上

// 语法格式三:数据类型可以省略(类型推断)// 正常写法Consumer<String> con2 = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};con2.accept("你好!");// Lambda表达式写法   -   数据类型可以省略(类型推断)Consumer<String> con3 = (s) ->{ System.out.println(s); };con3.accept("你好呀!");

语法格式四:Lambda若只有一个参数,参数的小括号可以省略

在上面语法格式三的基础上

// 语法格式四:Lambda若只有一个参数,参数的小括号可以省略// 正常写法Consumer<String> con4 = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};con4.accept("你好!");// Lambda表达式写法   -   Lambda若只有个参数,参数的小括号可以省略Consumer<String> con5 = s ->{ System.out.println(s); };con5.accept("你好呀!");

语法格式五:Lambda需要两个或者两个以上的参数,多条执行语句,并且可以有返回值

// 语法格式五:Lambda需要两个或者两个以上的参数,多条执行语句,并且可以有返回值// 正常写法Comparator<Integer> com1 = new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {System.out.println(o1);System.out.println(o2);return Integer.compare(o1,o2);}};int compare1 = com1.compare(12,21);System.out.println(compare1);// Lambda表达式写法Comparator<Integer> com2 = (o1,o2) -> {System.out.println(o1);System.out.println(o2);return Integer.compare(o1,o2);};int compare2 = com2.compare(12,21);System.out.println(compare2);

语法格式六:当Lambda体只有一条语句时,return与大括号若有,都可以省略

// 语法格式六:当Lambda体只有一条语句时,return 与大括号若有,都可以省略// 正常写法Comparator<Integer> com1 = new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare1 = com1.compare(12,21);System.out.println(compare1);// Lambda表达式写法  -  当Lambda体只有一条语句时,return 与大括号若有,都可以省略Comparator<Integer> com2 = (o1,o2) ->  Integer.compare(o1,o2);int compare2 = com2.compare(12,21);System.out.println(compare2);

Lambda 表达式的本质

Lambda表达式在java中与其它语言是不同的,Lambda在其它语言中是个函数,匿名函数,而在java中则作为接口的实例!

结语

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门

http://www.lryc.cn/news/15192.html

相关文章:

  • 改进YOLO系列 | 谷歌团队 | CondConv:用于高效推理的条件参数化卷积
  • SQL高级 --优化
  • 【C++】空间配置器
  • nginx的介绍及源码安装
  • 通过openssl生成pfx证书
  • 华为OD机试真题Python实现【敏感字段加密】真题+解题思路+代码(20222023)
  • 我的 System Verilog 学习记录(1)
  • 金三银四,我不允许你们不知道这些软件测试面试题
  • 【UnityEditor】Unity将Multiple Sprite分割成多张png小图
  • 独立搭建 handle server
  • 记一次KindEditor表格修改无效问题
  • 一种图片展示的完美方案,图片展示,object-fill
  • 社科院杜兰金融管理硕士——考研初试成绩已出,关于分数“6线”你有了解吗
  • Talk | 清华大学交叉信息研究院助理教授杜韬:利用计算方法探究流固耦合
  • 2023年,智能家居实体门店如何选品?
  • 数据分析-深度学习 NLP Day2关键词提取案例
  • LeetCode题解:938. 二叉搜索树的范围和,BFS,JavaScript,详细注释
  • istio初步了解
  • 【模板】用HTML编写邮件正文 | 各大邮箱几乎都会过滤css样式、js脚本等效果,如何用基础HTML编写?
  • 华为云计算之双活容灾
  • ASEMI高压MOS管ASE20N65SE体积,ASE20N65SE大小
  • resp连接redis服务器
  • 七天实现一个分布式缓存
  • 电子招标采购系统源码功能清单
  • mysql数据库基础知识
  • CAN总线通信
  • MATLAB/Simulink 通信原理及仿真学习(二)
  • CentOS7 防火墙(firewall)的操作命令
  • 文献工具汇总:论文查找、文献管理、文献翻译
  • SQL零基础入门学习(三)