JAVA 基础语法 day09

一、函数式编程

1.1认识Lambda表达式

此函数类似于数学中的函数:y=2x+1 , java中的函数:(x)➡ 2x + 1

语法格式:

(被重写方法的形参列表)➡ {被重写方法的方法体代码
}

作用:用于替代某些匿名内部类对象,让代码更具可读性

public class lambdaDemo1 {public static void main(String[] args) {//创建一个匿名内部类/*错误示范如下,lambda表达式并不能简化所有匿名内部类,只能简化函数式接口的匿名内部类Animal a = () -> {System.out.println("喵喵叫");};a.cry();}*/}
}abstract class Animal{public abstract void cry();
}

lambda表达式并不能简化所有匿名内部类,只能简化函数式接口的匿名内部类。

什么是函数式接口

有且仅有一个抽象方法的接口!

        //lambda简化函数式接口的匿名内部类swimming s1 =() -> {System.out.println("学生游得贼快");};s1.swim(); 

1.2 Lambda表达式的省略规则

        Arrays.sort(Students, (Student o1, Student o2)-> { //重写方法的形参列表:(Student o1, Student o2)if(o1.getAge()>o2.getAge()){return 1;}else if(o1.getAge()<o2.getAge()){return -1;}return 0;});

具体规则:

1.参数类型全部可以省略不写

2.如果只有一个参数,括号可以不写

3.如果lambda表达式只有一行代码,大括号及分号都可以不写,如果这个句子是return语句,return也不要

二、方法引用(现阶段少见,看到了再搜)

方法引用可以进一步简化lambda表达式,它在四个场景下可以使用

2.1静态方法引用

语法:

类名::静态方法

使用场景:如果某个lambda表达式中只是调用一个静态方法,并且“->”前后参数一致,就可以使用静态方法引用。

        //继续简化,使用静态引用简化Arrays.sort(Students , Student :: Compare);
    public static int Compare(Student s1, Student s2) {return s1.getAge() - s2.getAge();}
}

2.2 实例方法的引用

语法: 对象名 :: 实例方法

使用场景:如果某个lambda表达式中只是通过对象名调用一个实例方法,并且“->”前后参数一致,就可以使用实例方法引用。

2.3特定类型方法引用

语法: 特定类 :: 方法

使用场景:如果某个lambda表达式中只是调用一个特定类型的实例方法(比如string),并且前面参数列表中的第一个参数是作为方法的主调,并且后面的所有参数是作为该方法的入参,则可以使用特定类型的方法引用。

2.4构造器引用

语法: 类名 :: new

使用场景:如果某个lambda表达式中只是在创建对象,且“->”前后参数一致,就可以使用构造器引用

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

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

相关文章

[Redis][集群][下]详细讲解

目录 1.集群搭建(基于 Docker)2.主节点宕机1.宕机后会发生什么&#xff1f;2.处理流程1.故障判定2.故障迁移 3.集群扩容0.前言1.把新的主节点加入到集群2.重新分配slots3.给新的主节点添加从节点 1.集群搭建(基于 Docker) 拓扑结构如下&#xff1a; 创建目录和配置&#xff1…

【Python】FeinCMS:轻量级且可扩展的Django内容管理系统

在互联网飞速发展的今天&#xff0c;内容管理系统&#xff08;CMS&#xff09;成为了网站开发中的核心工具&#xff0c;尤其对于需要频繁更新内容的企业和个人站点而言&#xff0c;CMS 提供了极大的便利。市场上有许多不同的 CMS 工具可供选择&#xff0c;其中基于 Django 框架…

在IDEA中构建Jar包,安装Jar包到Maven仓库并在Maven项目中使用

文章目录 0. 关于本文1. IDEA构建Jar包1.1 准备一份Java代码&#xff08;就是你要构建工件的代码&#xff09;1.2 进行如下步骤构建工件 2. 关于Maven3. 将Jar包安装到Maven仓库4. 使用安装的Jar包依赖 0. 关于本文 本文内容&#xff1a; 借助IDEA构建Jar包将Jar包安装到Mave…

甄选范文“论网络安全体系设计”,软考高级论文,系统架构设计师论文

论文真题 随着社会信息化的普及,计算机网络已经在各行各业得到了广泛的应用。目前,绝大多数业务处理几乎完全依赖计算机和网络执行,各种重要数据如政府文件、工资档案、财务账目和人事档案等均依赖计算机和网络进行存储与传输。另一方面,针对计算机和网络的攻击活动日益猖…

STM32-HAL库驱动DHT11温湿度传感器 --2024.9.28

目录 一、教程简介 二、驱动原理讲解 &#xff08;一&#xff09;通信4步骤 &#xff08;二&#xff09;传感器数据解析 三、CubeMX生成底层代码 &#xff08;一&#xff09;基础配置 &#xff08;二&#xff09;配置DHT11的驱动引脚 &#xff08;三&#xff09;配置串口 四…

uni-app在线预览pdf

这里推荐下载pdf.js 插件 PDF.js - Browse Files at SourceForge.net 特此注意 如果报 Promise.withResolvers is not a function 请去查看版本兼容问题 降低pdf.js版本提高node版本 下载完成后 在 static 文件夹下新建 pdf 文件夹&#xff0c;将解压文件放进 pdf 文件…

【Python】Django Grappelli:打造优雅且现代化的 Django 管理后台

在 Django 开发中&#xff0c;默认的 Django Admin 界面尽管功能强大且能满足大多数管理需求&#xff0c;但其界面设计相对基础&#xff0c;尤其在用户体验和视觉呈现上显得较为简约。在一些项目中&#xff0c;开发者可能需要更加现代化且美观的后台界面。这时&#xff0c;Djan…

[Linux#58][HTTP] 自己构建服务器 | 实现网页分离 | 设计思路

目录 一. 最简单的HTTP服务器 二.服务器 2.0 Protocol.hpp httpServer.hpp 子进程的创建和退出 子进程退出的意义 父进程关闭连接套接字 httpServer.cc argc (argument count) argv (argument vector) 三.服务器和网页分离 思考与补充&#xff1a; 一. 最简单的HTT…

Tomcat搭建zrlog

1.基础环境准备&#xff1a; 在开始进行软件安装和服务配置之前&#xff0c;必须对系统进行基础设置&#xff0c;以确保服务器的正常运行。这个任务要求你进行一些基础的系统配置操作&#xff0c;包括修改主机名、关闭防火墙以及临时关闭 SELinux等。通过这些步骤&#xff0c;…

实验2 网络测试命令的使用及对等网组建

实验2 网络测试命令的使用及对等网组建 一、实验目的 1. 熟悉常用网络测试命令的语法及其功能&#xff1b; 2. 掌握常用的网络故障分析及排除的方法&#xff1b; 3. 熟悉Windows中的网络组建及各参数的设置和基本意义。 4.如何在对等网中建立共享及访问对方的共享资源。 二、…

国庆假节高速免费通行全攻略

关注▲洋洋科创星球▲一起成长&#xff01; 国庆节假期全国收费公路继续对7座以下&#xff08;含7座&#xff09;小型客车免收车辆通行费。 具体免费时段从 10月1日00&#xff1a;00开始 10月7日24&#xff1a;00结束 01 提前出发&#xff0c;免费离开&#xff1a; 如果你在…

FastAPI前置知识及快速入门

FastAPI fastapi&#xff0c;一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的web框架。 fastapi是建立在Starlette和Pydantic基础上的&#xff0c;Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工具包…

JNI实现Java调用C++函数

1. 测试环境 操作系统&#xff1a;win10JDK版本&#xff1a;JDK11 安装教程gcc版本&#xff1a;8.1.0 2. 声明native方法 // HelloJNI.java public class HelloJNI {// 输出Hello JNI from CPP. private native static void sayHello();// 实现两个整数相加private native s…

Java基础扫盲(二)

想看Java基础扫盲&#xff08;一&#xff09;的可以观看我的上篇文章Java基础扫盲 目录 String为什么设计为不可变的 String有长度限制吗 为什么JDK9将String的char[]改为byte[] 泛型中K,T,V,E,Object,?等都代表什么含义 怎么修改一个类中使用了private修饰的String类型…

Java基于相似算法实现以图搜图

一、简述 本文主要讲如何利用图片相似性算法&#xff0c;基于LIRE来实现图片搜索。 二、依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core --><dependency><groupId>org.apache.lucene</groupId><…

7.MySQL内置函数

目录 日期函数时间函数字符串函数数学函数其他函数 日期函数 函数名称描述current_date()当前日期current_time()当前时间current_timesamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date, interval d_value_tyep)在date中添加日期函数或时间。interval后…

项目计划软件如何助力企业策略规划和执行监控

项目管理软件助力任务、时间和协作管理&#xff0c;如ZohoProjects集成了任务管理、时间跟踪、协作工具等功能&#xff0c;提高性价比&#xff0c;适合不同规模团队。其简化流程、专业度高&#xff0c;成为企业提升效率的重要工具。 一、项目计划软件的由来 项目计划软件的历史…

在线代码编辑器

在线代码编辑器 文章说明前台核心代码后台核心代码效果展示源码下载 文章说明 采用Java结合vue3设计实现的在线代码编辑功能&#xff0c;支持在线编辑代码、运行代码&#xff0c;同时支持导入文件&#xff0c;支持图片识别&#xff0c;支持复制代码&#xff0c;可将代码导出为图…

Cookie、Session、Token(JWT)还不懂?

Cookie、Session、Token&#xff08;JWT&#xff09; 三者的区别与用途&#xff01;如何进行身份认证&#xff0c;保持用户登录状态&#xff1f; Cookie、Session 和 Token 都是在 Web 开发中用于管理用户状态和进行身份认证的技术&#xff0c;它们之间有以下区别和用途&#…