Lambda表达式详解

article/2025/10/4 2:09:49

Lambda表达式

      • 1. 为什么使用lambda表达式
      • 2. 入门案例
      • 3. lambda表达式组成
      • 4. lambda表达式使用
        • 4.1 语法格式一
        • 4.2 语法格式二
        • 4.3 语法格式三
        • 4.4 语法格式四
        • 4.5 语法格式五
        • 4.6 语法格式六
      • 5. 总结

1. 为什么使用lambda表达式

lambda是一个匿名函数,我们可以吧lambda表达式理解为是一段可以传递的代码。使用它可以写出更简洁,更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

2. 入门案例

先看一个简单的Java线程中的Runnable接口案例

public void test01(){Runnable ri = new Runnable() {@Overridepublic void run() {System.out.println("好好学习,天天向上");}};ri.run();}

在这里插入图片描述

再看下使用了Lambda表达式的版本

 public void test02(){Runnable r2 = ()-> System.out.println("学会lambda,快乐每一天");r2.run();}

在这里插入图片描述

相信看到这里,对Lambda表达式的第一印象就是代码怎么这么短,这也就是lambda表达式的特性:简洁。

再看一个案例,比较数的大小

public void test03(){Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare = comparator.compare(12, 21);System.out.println(compare);}

在这里插入图片描述

因为12是小于21的,所以这里返回的是-1;我们再来看看对应的lambda表达式的写法

 public void test04(){Comparator<Integer> comparator = (o1,o2)-> Integer.compare(o1,o2);int compare = comparator.compare(32,23);System.out.println(compare);}

在这里插入图片描述

因为32大于23,所以返回值为1;

3. lambda表达式组成

形如以下:

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

左边 -> 右边

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

4. lambda表达式使用

4.1 语法格式一

无参无返回值

public void test01(){Runnable ri = new Runnable() {@Overridepublic void run() {System.out.println("好好学习,天天向上");}};ri.run();}
 public void test02(){Runnable r2 = ()-> {System.out.println("学会lambda,快乐每一天");};r2.run();}

4.2 语法格式二

需要一个参数但无返回值

public void test05(){Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};consumer.accept("这一路上走走停停");}
public void test06(){Consumer<String> consumer = (String s)->{System.out.println(s);};consumer.accept("留下少年漂流的痕迹");}

4.3 语法格式三

数据类型可以省略,由编译器去推断出,称为“类型推断”

public void test05(){Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};consumer.accept("这一路上走走停停");}
public void test06(){Consumer<String> consumer = (s)->{System.out.println(s);}//类型推断consumer.accept("留下少年漂流的痕迹");}

这里有些类似于使用集合类是前面指明过泛型后,后边不需要再次指明

4.4 语法格式四

lambda若只需要一个参数时,参数的小括号可以省略

public void test05(){Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}};consumer.accept("这一路上走走停停");}
public void test06(){Consumer<String> consumer = s->{System.out.println(s);}//类型推断consumer.accept("留下少年漂流的痕迹");}

4.5 语法格式五

lambda需要两个或以上的参数,多条执行语句,并且可以有返回值

   public void test03(){Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {System.out.println(o1);System.out.println(02);return Integer.compare(o1,o2);}};int compare = comparator.compare(12, 21);System.out.println(compare);}
public void test04(){Comparator<Integer> comparator = (o1,o2)-> { System.out.println(o1);System.out.println(02);return Integer.compare(o1,o2);};int compare = comparator.compare(32,23);System.out.println(compare);
}

4.6 语法格式六

当lambda体只有一条语句时,return与大括号若有,都可以省略

public void test03(){Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare = comparator.compare(12, 21);System.out.println(compare);}
 public void test04(){Comparator<Integer> comparator = (o1,o2)-> Integer.compare(o1,o2);int compare = comparator.compare(32,23);System.out.println(compare);}

5. 总结

lambda接口的实质:作为函数式接口的实例,关键是这个匿名内部类的简化,省略。


http://chatgpt.dhexx.cn/article/f5nwYSjr.shtml

相关文章

Lambda 表达式

一.什么事Lambda表达式 Lambda 表达式是一种匿名函数&#xff0c;也可称为闭包&#xff0c;简单地说&#xff0c;它是没有声明的方法&#xff0c;也即没有访问修饰符、返回值声明和名字。 它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格&#xff0c;使 Java 语言…

Lambda表达式超详细总结(简单易懂)

文章目录 1、什么是Lambda表达式2、为什么使用Lambda表达式3、函数式接口&#xff08;lambda表达式的使用前提&#xff09;4、推导Lambda表达式5、Lambda表达式语法 1、什么是Lambda表达式 Lambda表达式&#xff0c;也可称为闭包。其本质属于函数式编程的概念&#xff0c;是Ja…

Lambda表达式超详细总结

文章目录 1. 什么是Lambda表达式2. 为什么使用Lambda表达式3. Lambda表达式语法4. 函数式接口4.1 什么是函数式接口4.2 自定义函数式接口4.3 Java内置函数式接口 5. 方法引用6. 构造器引用7. 数组引用8. Lambda表达式的作用域8.1 访问局部变量8.2 访问局部引用&#xff0c;静态…

SQL语句学习之SQL基础的表创建以及添加数据

SQL语句学习之SQL基础的表创建以及添加数据 学习目标1&#xff1a; 一周内掌握SQL基础语句 tip:主要是在牛客网&#xff08;牛客网&#xff09;上进行练习&#xff0c;里面有在线编程&#xff0c;可以直接运行&#xff0c;而且有解题的思路&#xff0c;比较清晰&#xff0c;而…

Hive SQL之表与建表

Hive数据模型总览 用户通过数据库访问Hive后&#xff0c;首先选择哪个数据库&#xff0c;然后在库的下面选择的是一张张表&#xff0c;表是管理数据的的最基本的所在&#xff0c;在表中的一行行记录&#xff0c;在现实中就是一条条数据&#xff0c;里面有我们的字段字段类型和它…

SQLite 创建表SQL语句

SQLite 创建表 创表语法 CREATE TABLE [表名称](--主键列不可为空[列1] [类型] PRIMARY KEY NOT NULL,--列可为空[列2] [类型],--列不可为空[列3] [类型] NOT NULL );创表示例 CREATE TABLE User (Id INT PRIMARY KEY NOT NULL,Name Text,Sex INT NOT NULL )在线Sqlite查看器…

SQL创建表为啥不显示

这里新建表 左上角报存 保存完以后点击刷新就会出来刚创建的表格

SQL 创建表的备份

1. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据&#xff0c;然后把数据插入另一个表中。 SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档&#xff1b; SQL SELECT INTO 语法 您可以把所有的列插入新表&#xff1a; SELECT * INTO new_table_name…

SQL Server创建表

我们要怎么在数据库中创建表呢&#xff01;首先&#xff0c;表在数据库和模式中唯一命名。每个表包含一个或多个列。 每列都有一个相关的数据类型&#xff0c;用于定义它可以存储的数据类型&#xff0c;例如&#xff1a;数字&#xff0c;字符串和日期。 要创建新表&#xff0c;…

SQL Server 创建表

我们在上一节中完成了数据库的创建&#xff0c;在本节&#xff0c;我们要往这个新的数据库中加入点数据&#xff0c;要想将数据添加到数据库&#xff0c;我们就必须在数据库中添加一个表&#xff0c;接下来来看看具体的操作。 我们的数据库是一个任务跟踪数据库&#xff0c;那…

ORACLE SQL 创建表

1.创建表&#xff1a; 1.1表名和列名&#xff1a; 一定要以字母开头 一定在 1-30 个字符之间 只能包含 A–Z, a–z, 0–9, _, $, 和 # 一定不能和用户定义的其他对象重名 一定不能是Oracle 的保留字 一定要有CREATE TABLE权限 而且需要一定的存储空间 还要指定的&…

利用SQL创建表结构

一、创建图书管理系统&#xff0c;其中涉及到的对象有&#xff08;图书分类&#xff0c;图书&#xff0c;学生&#xff0c;借书记录&#xff09; 1、列出关系模式 (1) 书本类别&#xff08;种类编号&#xff0c;种类名称&#xff09; (2) 学生&#xff08;学生编号&#xff0…

SQL创建表

要创建新的表&#xff0c;就要使用create table语句。 1、第一&#xff0c;要指定数据库的名称&#xff0c;必须是数据库有的&#xff0c;如果没有指定&#xff0c;那就默认是当前数据库。&#xff08;如图下所示是没有指定数据库的&#xff09; 2、第二&#xff0c;指定表的模…

SQL表的创建

一&#xff0c;创建表 1.使用普通方法创建表 1&#xff0c;进入SQL进行连接 2&#xff0c;在左边会有一个对象资源管理器&#xff0c;右键数据库&#xff0c;在弹出的窗口中选择新建数据库 3&#xff0c;给这个包取个名字&#xff0c;在这个界面可以给这个表选择存储地方&…

SQL语句之表的创建和使用

表 一、表的创建&#xff08;DDL&#xff09;1.建表的语法格式创建一个学生表 2.mysql中的数据类型3.删除表 二、在表中插入数据insert&#xff08;DML&#xff09;1.insert2.insert插入日期3.date和datetime区别 三、修改(update)DML1.语法格式 四、删除数据(delete)DML1.语法…

SQL 创建数据库,创建表

1.SQL CREATE DATABASE 语法 CREATE DATABASE 库名;创建数据库后&#xff0c;您可以在数据库列表中检查它。 SHOW DATABASES;2.SQL CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表。表由行和列组成&#xff0c;每个表都必须有个表名。 SQL CREATE TABLE 语法 C…

Autojs-识别验证码-超级鹰打码(全网独一份,求个三连不过分吧)

Autojs-识别验证码-超级鹰打码 前言先看效果再放代码封装一下1.识别图片2.报错返分3.查询用户的题分信息4.主函数 超级鹰文档错误码验证码类型&#xff08;截了几个常用的&#xff09;1.英文数字2.中文3.纯英文4.纯数字 最后求个三连~ 前言 JavaScript语言的超级鹰打码应该是全…

国内十大无代码平台,无代码app开发平台有哪些?

相信大家都知道&#xff0c;无代码开发就是软件开发者无需通过手工编码就可以达到目标需求的一种软件开发方式&#xff0c;降低了程序员对重复功能代码编写的任务量&#xff0c;使应用软件的开发效率得到了大幅提升&#xff0c;所以就备受欢迎&#xff0c;那么市面上哪些无代码…

html页面自动登录,抓取网页时自动登录和自动输入验证码

集搜客GooSeeker网页抓取软件可以与在线打码平台对接,如果抓取的网站要求输入验证码,那么就把验证码转发给在线打码平台,GooSeeker将打码平台给回的结果自动录入到网页上,完成打码过程。集搜客GooSeeker V5.1.0版本支持如下功能与联众打码平台对接,请用户自行在联众打码平…

测试-小程序打码平台

一、背景 1、小程序不同于H5有线上和线下环境&#xff0c;而是区分开发版、体验版、正式版&#xff0c;并且每个版本都有对应的权限管控 2、平时项目测试过程中&#xff0c;都是基于开发码进行测试和验收的&#xff1b; 3、开发码生成的流程&#xff1a;开发分支代码本地编译打…