jdk1.8新特性之Lambda表达式

2023-10-27

目录

一、为什么使用lambda表达式

二、lambda 表达式语法


一、为什么使用lambda表达式

1.lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码

(将代码像数据一样进行传递)

 

二、lambda 表达式语法

java 8中引入一个新的操作符"->",该操作符称为箭头操作符或Lambda 操作符

箭头操作符将Lambda 表达式拆分成两部分:

左侧:Lambda 表达式的参数列表

右侧: Lambda 表达式中的所需执行的功能,即Lambda 体

 

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

() -> System.out.println("Hello Lambda!");

 

public void test1(){
 Runnable r = new Runnable(){
     @Override public void run(){ 
        System.out.println("Hello     World"); 

    } };

     r.run(); 

}

等同于

Runnable r1 = () -> System.out.println("Hello Lambda!"); r1.run();

 

 

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

(x) -> System.out.println(x);

 

Consumer<String> con = (x) -> System.out.println(x); con.accept("哈哈哈");

 

语法格式三:若只有一个参数,参数的小括号可以不写

x -> System.out.println(x);

Consumer<String> con = x -> System.out.println(x);

 

 

语法格式四:有两个以上的参数,有返回值,并且Lambda 体中有多条语句,要用大括号括起来

 

Compatator<Integer> com = (x,y) -> { 
    System.out.println("函数式接口"); 
    return Integer.compare(x,y);
 };

 

语法格式五:有两个以上的参数,有返回值,若 Lambda 体中只有一条语句,return 和大括号都可以省略不写

Compatator<Integer> com = (x,y) -> Integer.compare(x,y);

 

语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”

(Integer x,Integer y) -> Integer.compare(x,y);

 

String[] strs ={"aaa","bbb","ccc"};

 

List<String> list = new ArrayList<>();

 

总结: 左右遇一括号省,左侧推断类型省

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jdk1.8新特性之Lambda表达式 的相关文章

  • 如何以编程方式检查应用程序是否在调试模式下运行?

    我必须在应用程序中的某个位置确定我的应用程序是在调试模式还是实时模式下运行 是否有任何函数或代码可用于检查 在开 关两种情况下都会返回 true false 如果是这样 请帮助我 提前致谢 从问题中尚不清楚调试模式是否指的是 应用程序是否可
  • 编译错误:Android Studio

    我正在尝试修改基于 IntelliJ 构建的现有 Android 项目 我已经搜索并尝试了很多东西 但我的错误仍然没有消失 Error 5 1 android apt compiler main D android tinynote app
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • 为移动设备扩展 libgdx UI?

    眼下desktop应用程序的版本很好 按钮缩放得很好 但是当我部署到android它们很小 几乎无法使用 DesktopLauncher public class DesktopLauncher public static void mai
  • JLabel.setText() 中的换行符

    使用 JLabel setText 时如何插入换行符 我尝试使用 Html 但似乎可以使其适用于 setText 仅适用于 jLabel 的初始声明 最初声明 jlabel 时的方法是 label new JLabel Hello Worl
  • 如何使用 log4j 自动记录类中调用的每个方法

    我有一个包含数据库调用的类 我通常希望使用 log4j 记录该类中调用的每个方法 带参数 logger debug foo id id initiated 可以自动执行此操作吗 也许通过在每个方法的开头使用某种注释而不是编写每个 logge
  • java中如何围绕另一个移动对象旋转一个对象?

    我对 Java 很陌生 想要编写一个简单的太阳系统 其中月球绕地球旋转 地球绕太阳旋转 一切正常 除了月亮不想正确移动 由于地球偏离月球的初始位置 月球的自转半径会根据该距离而增大 同样 当地球接近月球惯性位置时 自转半径会减小 如果初始位
  • JSP重定向和传值

    我有一个 JSP 其中我重定向到另一个 jsp 例如 我在该jsp中没有任何其他数据 我想将值从该jsp index jsp 传递到重定向jsp login jsp 我将如何做到这一点 这里的 logonInput 是在struts con
  • lombok - 多个镜头中的 @Builder 模式

    I use Builder of 龙目岛项目 https github com rzwitserloot lombok 所以考虑我有这个例子 Builder public class Client private Getter Setter
  • 仅使用 ServletContext 查找应用程序的 URL

    我正在使用 Spring MVC 编写一个 Java Web 应用程序 我有一个后台进程 它会遍历数据库并查找必须通过电子邮件发送给我的用户的通知 这些电子邮件需要包含应用程序的超链接 对于网络应用程序来说 这似乎是相当常见的模式 但我遇到
  • x.person 上的 @OneToOne 或 @ManyToOne 引用未知实体:y.Person - 继承问题

    我的 Hibernate 架构有问题 我有一个 MappedSuperClass 人员 一名员工和一名客户 gt Person class MappedSuperclass Audited public class Person exten
  • 用java解密AES加密文件

    我有一个使用 AES 使用 java 应用程序加密的文件 我还有一个加密的密钥文件 但我不明白如何使用密钥来解密文件 大多数教程和示例都会在一个地方创建临时随机密钥 加密文件和解密 所以 问题是如何指定解密时必须使用的密钥 EDIT 我发现
  • 序言中不允许引用

    请帮我找到这个异常的原因 我使用以下罐子 core renderer jar itext paulo 155 jar 第一个文档 xhtml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE h
  • 在java中设置Process对象的安全性

    有人可以告诉我如何限制通过进程对象访问系统属性吗 如果我通过进程对象运行以下代码 我可以抛出安全异常吗 System getProperty user home 请告诉我如何为流程对象配置证券 在ProcessBuilder类文档中 环境方
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 无法运行简单的 doclet 程序:包 com.sun.javadoc 不存在

    我正在尝试运行一个简单的 doclet 程序 但无法编译它 javac cp cygdrive c Progra 2 Java jdk1 8 0 65 lib tools jar A java 但它抛出 A java 1 错误 包 com
  • 在调试模式下,哪些代码更改会自动反映在 Eclipse 中?

    我使用 eclipse 用于编写 调试 作为 IDE 在调试模式下 当我进行一些更改 例如初始化局部变量 时 它们会自动反映 但其他更改例如更改静态变量的值 有时我会收到一条消息 说我需要重新启动虚拟机 有时则不需要 现在的问题是哪些类型的
  • 仅在java中使用数组计算50的阶乘

    我是java的初学者 我有一个作业要编写一个完整的程序 使用数组计算 50 的阶乘 我无法使用像 biginteger 这样的任何方法 我只能使用数组 因为我的教授希望我们理解背后的逻辑 我猜 然而 他并没有真正教我们数组的细节 所以我在这
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • python3.7成功换虚拟环境python3.6

    目录 1 打开CMD 查看自己有多少虚拟环境 2 打开anaconda prompt 终端 创建 3 6环境 3 在pycharm中从3 7正确换配置为3 6环境 1 打开CMD 查看自己有多少虚拟环境 C Users Administra
  • shell 中的单行注释和多行注释

    今天在学习shell编程的时候 当自己想对多行进行注释时 发现自己不会 所以在网上去查询下 参考 作者 lansesl2008 地址 http blog csdn net lansesl2008 article details 205583
  • 疯传全网网络10个运维巡检脚本以及使用小技巧

    哈喽大家好 欢迎来到虚拟化时代君 XNHCYL 大家好 我是虚拟化时代君 一位潜心于互联网的技术宅男 这里每天为你分享各种你感兴趣的技术 教程 软件 资源 福利 每天更新不间断 福利不见不散 第1章 前言 巡检脚本在网络运维中非常重要 近期
  • Jenkins远程命令执行漏洞(CVE-2018-1000861)

    声明 好好学习 天天向上 漏洞描述 Jenkins使用Stapler框架开发 其允许用户通过URL PATH来调用一次public方法 由于这个过程没有做限制 攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法 通过这个漏洞 我们
  • C单元测试框架——CMockery (1) 简介

    cmockery 是google发布的用于C单元测试的一个轻量级的框架 主要特点 免费且开源 google提供技术支持 轻量级的框架 使测试更加快速简单 避免使用复杂的编译器特性 对老版本的编译器来讲 兼容性好 并不强制要求待测代码必须依赖
  • 【设计模式】-设计模式总目录

    设计模式 重要性不多说了 之前在简书上简单总结过 这次再来总结一次 更详细版 以此加深印象和帮助理解 01 单例模式 https blog csdn net lovexiaotaozi article details 83896573 02
  • Java并发编程——ReentrantLock重入锁解析

    重入锁 所谓重入锁 即支持重入性 表示能够对共享资源重复加锁 即当前线程获取该锁再次获取不会被阻塞 重入性 在线程获取锁的时候 如果已经获取锁的线程是当前线程的话则直接再次获取成功 由于锁会被获取n次 那么只有锁在被释放同样的n次之后 该锁
  • 二叉树的层序遍历,以及求层数

    二叉树的中序遍历 最主要的一种方法是用队列 Queue 来实现 下面贴出一份实现代码 class Tree int data Tree lchild 左孩子 Tree rchild 右孩子 以下是主要方法 public static voi
  • 自己实现telnet程序

    转自 http blog csdn net gujintong1110 article details 44278535 include
  • Metasploitable渗透测试实战:ms17-010

    漏洞简介 永恒之蓝 即ms17 010 是指2017年4月14日晚 黑客团体Shadow Brokers 影子经纪人 公布一大批网络攻击工具 其中包含 永恒之蓝 工具 永恒之蓝 利用Windows系统的SMB漏洞可以获取系统最高权限 5月1
  • 论文解读:Improving Nighttime Driving-Scene Segmentation via Dual Image-adaptive Learnable Filters

    论文地址 https arxiv org abs 2207 01331 发表时间 Submitted on 4 Jul 2022 v1 last revised 20 Mar 2023 this version v2 项目地址 https
  • C语言穷举解决最大子序列含测试

    题目再现 设给定一个整数序列 a 1 a 2
  • Python语言:列表初体验

    列表是Python中的一个对象 他类似于C语言中的数组 可以存储许多数据 也可以称之为数据集合 他原则是可以存储不同类型的数据 一般不建议这样使用 有点奇怪 一般情况下一个列表中保存的都是同一种类型的数据 列表的创建 列表 list 是把数
  • qml界面参数传递、返回

    背景 设计设置界面时需要在键盘上设置数值 设定完返回时需要知道返回值是什么 如果用上下级关系实现可能很方便 但是会重复加载按键模块 觉得这样不好 想用stackView push url 初始值 设定后的值 这样的方式 1 想过用带参数信号
  • Java事件机制简介 内含面试题

    面试题分享 云数据解决事务回滚问题 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java python面试题 项目实战 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转clo
  • 编程是一门技术,更加是一门艺术

    最近一段时间在学习 大话设计模式 书籍开篇就提到 编程是一门技术 更加是一门艺术 这句经典 读罢 我不得不被作者程序设计模式这种与众不同的思维所折服 其实软件编程真的是一门了不起的艺术 谈及 艺术 人们自然会联想到 美 技艺 灵感 等词 但
  • 开关电源输出纹波主要来源五个方面?示波器测纹波方法?

    一 开关电源纹波来源 以20M示波器带宽为限制标准 电压设为PK PK 也有测有效值的 去除示波器控头上的夹子与地线 因为这个本身的夹子与地线会形成环路 像一个天线接收杂讯 引入一些不必要的杂讯 使用接地环 不使用接地环也可以 不过要考虑其
  • armeabi和armeabi-v7a

    在我们android APK的根目录有一个 libs文件夹 此文件夹下包含了armeabi 和armeabi v7a两个文件夹 我们的c代码编译成的本地库 各种 so 就会放在这两个文件夹其中的一个 那armeabi v7a 与 armea
  • 《机器学习》(西瓜书)第六章

    6 1 间隔与支持向量 对于两类训练样本分开的超平面很多 我们需要找到对训练样本局部扰动的 容忍 性最好的那一个 对未见示例的泛化能力最强 鲁棒性 一个系统或组织抵御或克服不利条件的能力 距离超平面最近的几个训练样本能够正确分类 他们被称为
  • jdk1.8新特性之Lambda表达式

    目录 一 为什么使用lambda表达式 二 lambda 表达式语法 一 为什么使用lambda表达式 1 lambda是一个匿名函数 我们可以把lambda表达式理解为是一段可以传递的代码 将代码像数据一样进行传递 二 lambda 表达