JDK8--03:lambda表达式语法
对于lambda表达式的基础语法,一个是要了解lambda表达式的基础语法,另外一个是需要了解函数式接口
一、lambda表达式基础语法描述
java8中引入了新的操作符 -> ,可以称为lambda操作符或者箭头操作符,操作符将lambda表达式拆分为两部分。
左侧:参数列表
右侧:表达式要执行的代码,即lambda体
lambda的格式总体有以下几种:
第一种:无参数,无返回值
第二种:有参数,无返回值
变体1:可以省略入参的类型
变体2:有一个参数,可以省略参数的小括号
第三种:有参数,有返回值
变体:lambda体中只有一条执行语句,可以省略lambda体中的return和大括号
二、lambda表达式样例
1、表达式一,无参数,无返回值
/** * lambda表达式一 */ public void test1(){ //jdk1.7之前 Runnable runnable = new Runnable() { @Override public void run() { System.out.print("hello runnable"); } }; runnable.run(); System.out.println("============================="); //使用lambda表达式 Runnable runnable1 = () -> System.out.println("hello lambda"); runnable1.run(); }
2、表达式二:有参数,无返回值
public void test2(){ Comparator<Integer> comparator = (Integer x, Integer y) -> Integer.compare(x,y); }
变体1:可以省略入参的类型(这是因为jvm编译器在编译时可以根据上下文进行类型推断,从而推断出入参的类型;另外此处要省略全不省略,不能有的参数省略,有的参数不省略)
public void test3(){ Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y); }
变体2:有一个参数,可以省略参数的小括号
public void test4(){ Consumer<String> consumer = x -> System.out.println(x); consumer.accept("hello"); }
第三种:有参数,有返回值
public void test5(){ Comparator<Integer> comparator = (Integer x, Integer y) -> { log.info("hello test5"); return Integer.compare(x,y); }; }
变体:lambda体中只有一条执行语句,可以省略lambda体中的return和大括号(其实这个已经展示过,在第二种的变体1种)
public void test3(){ Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y); }
总结:
左右遇一括号省
左侧推断类型省
三、函数式接口
lambda表达式需要函数式接口的支持,函数式接口即一个接口中只有一个实现方法。可以使用注解@FunctionalInterface进行检验
四、函数式接口样例(java8提供了四大核心函数式接口,后续会说明)
新建一个函数式接口
package com.example.jdk8demo.lambda; @FunctionalInterface public interface MyInterface { Integer getInteger(Integer i); }
新增函数式接口调用方法
public Integer getInteger(Integer i, MyInterface mi){ return mi.getInteger(i); }
最后就是使用lambda表达式具体的实现逻辑
public void test6(){ //获取10的平方 log.info("============" + getInteger(10,(x) -> x*x)); }
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律