java8新特性---lambda表达式

news2024/9/25 9:41:16

1、 Lambda是什么?

Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符或剪头操作符。它将 Lambda 分为两个部分:

左侧:指定了 Lambda 表达式需要的所有参数。
右侧:指定了 Lambda 体,即 Lambda 表达式要执行的功能。

2、 举例

查看例子:LambdaDemo

@FunctionalInterface
interface Foo{
    public int add(int x,int y);
    default int div(int x,int y){
        return x/y;
    }
   public static int sub(int x ,int y){
        return x-y;
   }

}
public class LambdaDemo {

    /**
     * Lambda Express-----> 函数式编程
     * @param args
     * @throws Exception
     *拷贝小括号(),写死右箭头->,落地大括号{...}
     *
     */
    public static void main(String[] args)throws Exception {
//        Foo foo = new Foo() {
//            @Override
//            public int add(int x, int y) {
//                System.out.println("hello java200211!!");
//                return x+y;
//            }
//        };
        Foo foo = (int x,int y)->{
            System.out.println("hello java200211!!");
            return x+y;
        };
        System.out.println(foo.add(10,5));
        System.out.println(foo.div(10,5));
        System.out.println(Foo.sub(10,5));

    }
}

3、 要求

(1)必须是函数式接口

@FunctionalInterface

(2)lambda表达式,如果一个接口只有一个方法,可以把方法名省略

Foo foo = () -> {System.out.println("****hello lambda");};

4、 lambda表达式写法

拷贝小括号(),写死右箭头->,落地大括号{…}

5、 函数式接口

lambda表达式,必须是函数式接口,必须只有一个方法
如果接口只有一个方法java默认它为函数式接口。
为了正确使用Lambda表达式,需要给接口加个注解:@FunctionalInterface
如有两个方法,立刻报错。

Runnable接口为什么可以用lambda表达式?
因为接口注解有 @FunctionalInterface

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux配置git账号密码

HTTP/HTTPS Linux 在Linux环境下使用http/https协议clone/pull GitLab仓库的代码遇到这个问题。以下解决方案也适合GitHub或其他仓库如码云,coding。 解决方案: 在home目录下创建.git-credentials文件vim .git-credentials,输入形如https:…

重装pycharm后一直在Updating indexes

今天卸载pycharm社区版,安装好pycharm专业版之后,右下角一直显示Updating indexes 解决步骤: 先卸载pycharm;打开cmd,键入regedit,打开“注册表编辑器”;在“注册表编辑器”中按ctrlF&#xff…

spring是如何解析@Transactional属性的

1、查看value调用 发现并无地方调用 2、查看 transactionManager调用 发现并无地方调用 3、直接查看transaction被解析方法 SpringTransactionAnnotationParser#parseTransactionAnnotation(java.lang.reflect.AnnotatedElement) 4、查看返回的解析类 Tra…

C++——二分法求多项式曲线区间极值

二分法求多项式曲线区间极值 二分法求解,设置left为左边界,right为右边界,则解一定位于left和right之间,当左右边界之间的差值小于某一精确度时,就认为找到了解。具体操作如下,若是先减后增,首先…

Unity UGUI 实现一个拖拽一个物体到另一个物体上 并返回两个物体是否相交或者是否在对方物体的中心点

Unity版本 2021.3.25f1c1 首先创建一个碰撞管理器 ColliderNodeManager.cs 具体代码实现如下 using System; using UnityEngine;/// <summary> /// 碰撞检测管理器 /// </summary> public class ColliderNodeManager : MonoBehaviour {public static ColliderN…

Qt错误: warning: ignoring old recipe for target ‘childwnd.o‘.

Qt中这样的错误 &#xff1a; 错误原因 &#xff1a; 工程文件, 也就是 *.pro文件, 其中的源文件*.cpp, 头文件*.h, ui文件*.ui以及资源文件*.qrc 重复了, 删掉就好. *.pro文件就是这玩意 &#xff1a; *.pro文件中的文件重复&#xff1a; 如果还是出现这样的错误警告&#…

Flutter中的Alignment是怎么回事?

我们知道Flutter中的Container有个alignment的属性&#xff0c;我们可以设置一些topLeft,center之类的位置名字的值&#xff0c;也可以设置Alignment(x,y)这种具体数值的值。那么Align子widget的位置跟x、y是什么关系呢&#xff1f;以水平方向为例&#xff0c;我们知道x-1表示子…

vs+qt 给打包程序添加图标

1、在创建的qt工程文件中添加如下代码&#xff1a; this->setWindowIcon(QIcon(":/new/prefix1/ico"));//设置软件图标 this->setWindowTitle("XXX软件名 ");//设置软件标题 运行后软件的左上角会有图标 2、让编译成的exe带图标 生成…

dup、dup2、F_DUPFD、dup3、F_DUPFD_CLOEXEC:实例

本实例将输出和错误输出&#xff0c;重定向到文件outlog.txt文件。 dup实现 测试代码&#xff1a; #include <sys/types.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h>…

基于win10环境搭建图片服务器的两种方式

简述 这几天接到一种需求&#xff0c;需要在window环境搭建图片服务&#xff0c;去网上搜一下&#xff0c;最终想出两种方式一种是Nginx方式 &#xff0c;一种是公司常用的iis服务方式&#xff0c;最终使用iis方式&#xff0c;这里简单记录一下。 Nginx nginx方式很简单&#…

机器学习模型优化器Adam报错:ValueError: decay is deprecated in the new Keras optimizer

文章目录 深度学习模型优化器报错&#xff1a;报错原因&#xff1a; 解决方案&#xff1a; 深度学习模型优化器报错&#xff1a; ValueError: decay is deprecated in the new Keras optimizer, pleasecheck the docstring for valid arguments, or use the legacy optimizer,…

5G已难拉动收入增长,运营商对于高投入的5G左右为难

随着三大运营商的5G用户数突破10亿&#xff0c;5G已很难拉动ARPU的增长了&#xff0c;表现出来的业绩就是增长快速放缓&#xff0c;工信部披露的数据显示移动数据业务收入增长已接近于零。 工信部发布了“2023年1&#xff0d;5月份通信业经济运行情况”显示三大运营商的移动数据…

Java(六):Eureka项目搭建、数据请求

Eureka项目搭建、数据请求 Eureka简介Eureka项目创建1、新建Maven项目2、只保留Maven项目的依赖文件3、创建子模块&#xff08;Eureka服务模块&#xff09;4、修改pom.xml5、创建并修改配置文件6、添加Eureka注解7、运行8、创建其他服务9、修改pom.xml10、创建并修改配置文件11…

Mac网络扫描工具iNet Network Scanner

iNet Network Scanner是一款适用于 macOS 系统的网络扫描工具&#xff0c;可以帮助用户快速识别和监控局域网中连接的设备和服务。该软件提供了直观的界面和丰富的功能&#xff0c;支持多种网络协议和扫描选项&#xff0c;并具有高度的可定制性和灵活性。 iNet Network Scanner…

javaee 任务调度 定时任务 schedule

任务调度可以实现指定的时间执行某个任务&#xff0c;比如每一分钟执行一次&#xff0c;指定时间执行一次。 MyTimeTask package com.yyy.schedule;import java.text.SimpleDateFormat; import java.util.TimerTask;public class MyTimeTask extends TimerTask {//重写run方法…

Springboot上传图片和回显示图片

本次演示的是直接使用Springboot上传到服务器而不是七牛云等oss,springboot对于前端传输的文件数据类型格式的封装为MultipartFile,前端上传的图片是被存在服务端的缓存区的,当controller处理的时候,缓存区就被清空,所以需要转存,使用transferTo Api 前端采用elementui 直接上传…

开源之夏2023中选结果公示,504名高校生将投入开源项目贡献

中国科学院软件研究所与openEuler社区联合主办的开源之夏活动项目申请阶段告一段落&#xff0c;中选学生名单已公布。前往官网项目列表即可查看项目中选情况https://summer-ospp.ac.cn/org/projectlist开源之夏今年已进行至第四届&#xff0c;成为每年暑期前最受高校开发者关注…

SAP从入门到放弃系列之订单创建-概念-Part1

目录导航 概述订单创建一、通过计划订单创建生产订单1.1、计划订单转为生产订单-part11.2、计划订单转为生产订单-part2操作方式&#xff1a; 二、通过物料或者复制方式创建三、创建无物料的订单四、通过销售订单创建生产订单五、通过项目创建销售订单 概述 根据不同的需求&am…

【深度学习】深入理解Batch Normalization批标准化

机器学习领域有个很重要的假设&#xff1a;独立同分布假设&#xff08;IID&#xff09;&#xff0c;就是假设训练数据和测试数据是满足相同分布的&#xff0c;这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢&#xff1f;BatchN…

[游戏开发][Unity]出包真机运行花屏(已解决)

花屏真机截屏 原因 原因是启动项目时的第一个场景没有相机是 Skybox或者SolidColor模式&#xff0c;我的启动场景只有一个UI相机&#xff0c;且Clear Flags是DepthOnly 解释&#xff1a; https://blog.csdn.net/yanchezuo/article/details/79002318