Lambda表达式1.什么是Lambda?Lambda是Java8新增的特性。说白了,Lambda就是一个命名函数2.Lambda基本语法Lambda是一个匿名函数。一般关注两个关键点:1.参数列表2.方法体():用于描述参数列表{}:用于描述方法体->:Lambdaoperatorisreadasgoesto/***没有参数并且没有返回值接口*/@FunctionalInterfacepublicinterfaceLambdaNoneReturnNoneParmeter{voidtest();}/***没有带有单个参数的返回值*/@FunctionalInterfacepublicinterfaceLambdaNoneReturnSingleParmeter{voidtest(intn);}/***Interfacewith多参数无返回值*/@FunctionalInterfacepublicinterfaceLambdaNoneReturnMultipleParmeter{voidtest(inta,intb);}/***有返回值无参数接口*/@FunctionalInterfacepublicinterfaceLambdaSingleReturnNoneParmeter{inttest();}/***具有返回值和单个参数的接口*/@FunctionalInterfacepublicinterfaceLambdaSingleReturnSingleParmeter{inttest(intn);}/***yes具有多个返回值参数的接口*/@FunctionalInterfacepublicinterfaceLambdaSingleReturnMultipleParmeter{inttest(inta,intb);}/***@authorAlan*/publicclassSyntax1{publicstaticvoidmain(String[]args){//1.Lambda表达式的基本语法//Lambda是一个匿名函数重点在于以下两点//参数列表方法体/***():用于描述参数列表*{}:用于描述方法体*->:Lambdaoperatorisreadasgoesto*///无LambdaNoneReturnNoneParmeterlambda1=()->{System.out.println("helloword");};lambda1.test();//无返回值单参数LambdaNoneReturnSingleParmeterlambda2=(intn)->{System.out.println("参数为:"+n);};lambda2.test(10);//无返回值多参数LambdaNoneReturnMultipleParmeterlambda3=(inta,intb)->{System.out.println("参数之和为:"+(a+b));};lambda3.test(10,12);//有返回值,无参数LambdaSingleReturnNoneParmeterlambda4=()->{System.out.println("lambda4:");返回100;};intret=lambda4.test();System.out.println("返回值为:"+ret);//有一个带返回值的参数LambdaSingleReturnSingleParmeterlambda5=(inta)->{returna*2;};内部t2=lambda5.test(3);System.out.println("单参数,lambda5的返回值为:"+ret2);//带返回值的多个参数LambdaSingleReturnMultipleParmeterlambda6=(inta,intb)->{returna+b;};intret3=lambda6.test(12,14);System.out.println("多个参数,lambda6的返回值为:"+ret3);}}输出结果:helloword参数为:10个参数sum:22lambda4:返回值:100个单参数,lambda5返回值:6个多参数,lambda6返回值:263语法简化3.1.parametertypesimplification/***syntaxsimplification*1.parameterType*由于在接口的抽象方法中已经定义了参数的个数和类型,所以Lambda表达式中参数的类型可以省略*备注:如果类型需要省略,每个参数的类型必须省略,一个不省略一个不省略*/LambdaNoneReturnMutipleParmeterlambda1=(inta,intb)->{System.out.println("helloworld");};可以简化为:LambdaNoneReturnMutipleParmeterlambda1=(a,b)->{System.out.println("你好世界");};3.2。参数括号简化/***2.参数括号*如果参数列表只有一个参数,括号可以省略*/LambdaNoneReturnSingleParmeterlambda2=(a)->{System.out.println("helloworld");};可以简化为:LambdaNoneReturnSingleParmeterlambda2=a->{System.out.println("helloworld");};3.3.方法大括号简化/***3.方法大括号*如果方法体中只有一条语句,此时大括号可以省略*/LambdaNoneReturnSingleParmeterlambda3=a->{System.out.println("hello世界”);};可以简化为:LambdaNoneReturnSingleParmeterlambda3=a->System.out.println("helloworld");3.4.大括号精简补充/***4.如果方法体中只有return语句*省略大括号时,return*/LambdaSingleReturnNoneParmeterlambda4=()->{return10;};可以简化为:LambdaSingleReturnNoneParmeterlambda4=()->10;a,b)->{返回a+b;};可以简化为:LambdaSingleReturnMutipleParmeterlambda5=(a,b)->a+b;4.Lambda高级语法publicclassSyntax3{publicstaticvoidmain(String[]args){LambdaSingleReturnSingleParmeterlambda1=a->a*2;LambdaSingleReturnSingleParmeterlambda2=a->a*2;LambdaSingleReturnSingleParmeterlambda3=a->a*2;//简化的LambdaSingleReturnSingleParmeterlambda4=a->change//method(a);引用LambdaSingleReturnSingleParmeterlambda5=Syntax3::change;}/***自定义实现方法*/privatestaticintchange(inta){returna*2;}}
