二、Lambda 表达式基础语法
一、Lambda 表达式的基础语法
Java8中引入了一个新操作符“->”,该操作符称为箭头操作符或Lambda操作符
箭头操作符将Lambda表达式拆分成两部分:
左侧:Lambda表达式的参数列表
右侧:Lambda表达式中所需要执行的功能,即Lambda体
上联:左右遇一括号省
下联:左侧推断类型省
横批:能省则省
二、Lambda 表达式需要函数式接口的支持
函数式接口:若接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解@FunctionalInterface 修饰,可以检查是否是函数式接口
//语法格式一:无参数,无返回值 @Test public void test1() { int num = 0; //jdk1.7前,必须有final,默认加上 Runnable r = new Runnable() { @Override public void run() { System.out.println("hello world!" + num); } }; r.run(); System.out.println("---------------------------"); Runnable r1 = () -> System.out.println("Hello Lambda!" + num); r1.run(); } //语法格式二:有一个参数,并且无返回值 @Test public void test2() { Consumer<String> con = (x) -> System.out.println(x); con.accept("我大威武!"); } //语法格式三:若只有一个参数, 小括号可以省略不写 @Test public void test3() { Consumer<String> con = x -> System.out.println(x); con.accept("我大威武!"); } //语法格式四:有两个以上参数,有返回值,并且Lambda体中有多条语句,Lambda体必须使用大括号 @Test public void test4(){ Comparator<Integer> comparator=(x,y)->{ System.out.println("函数式接口"); return Integer.compare(x,y); }; } //语法格式五:若Lambda体只有一条语句,return和大括号都可以省略不写 @Test public void test5(){ Comparator<Integer> comparator=(x,y)->Integer.compare(x,y); } /** * 语法格式六:Lambda表达式的参数列表的数据类型可以省略不写, * 因为JVM编译器可以通过上下文推断出数据类型,称为类型推断 */ @Test public void test6(){ Comparator<Integer> comparator=(Integer x,Integer y)->Integer.compare(x,y); } //类型推断举例 @Test public void test7(){ String[] strings={"aaa","bbb","ccc"}; List<String> list=new ArrayList<>(); show(new HashMap<>()); } public void show(Map<String,Integer> map){ } //需求:对一个数进行运算 @Test public void application(){ Integer num = operation(100, (x) -> x * x); System.out.println(num); System.out.println(operation(200,(y)->y+200)); } public Integer operation(Integer num, MyFun myFun){ return myFun.getValue(num); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端