Lambda表达式在引入函数式接口之前使用:如果一个接口中只声明了一个抽象方法,则该接口称为函数式接口。lambda表达式的本质:何时作为函数式接口的实例使用:当函数式接口需要被实例化时,可以使用lambda表达式。Lambda表达式的基本语法示例:(o1,o2)->Integer.compare(o1,o2);格式::lambdaoperatororarrowoperator左边:lambda参数列表(接口中抽象方法的参数列表)右边:lambdabody(重写后的抽象方法的方法体)六种语法格式语法格式1:无参数,无返回值Runnabler1=()->{System.out.println("hellolambda!");};语法格式2:Lambda需要一个参数,但是没有返回值Consumercon=(Stringstr)->{System.out.println(str);};语法格式3:数据类型可以省略,因为编译器可以通过Inferred来判断,称为“类型推断”Consumercon=(str)->{System.out.println(str);};语法格式4:如果Lambda只需要一个括号可以省略Consumercon=str->{System.out.println(str);};语法格式五:如果Lambda只需要两个或多个参数,多条执行语句,并且可以有返回值Consumercon=(x,y)->{System.out.println("实现函数式接口方??法!");返回Integer.compare(x,y);};语法格式6:只有一个Lambdabody时语句中,如果有return和花括号,两者都可以省略Consumercon=(x,y)->Integer.compare(x,y);总结六种情况:左:lambda参数列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,右边的一对()也可以省略:lambda体应该用一对{}包裹起来;如果lambda体只有一个执行语句(可能是return语句,省略这个For{}和return关键字)方法参考使用情况:当要传递给lambda体的操作,已经有一个实现方法,可以使用方法参考!方法引用,本质上它是一个lambda表达式,lambda表达式是一个函数式接口的实例,所以一个方法引用也是一个函数式接口的实例。使用格式:类(或对象)::方法名具体分为以下三种情况Case1object::Non-staticmethodcase2Class::staticmethodcase3Class::non-staticmethod方法参考使用要求:要求接口中抽象方法的形参列表和返回值类型与方法引用的形参列表和返回值类型值类型相同!(对于case1和case2)当函数式接口方??法的第一个参数是需要引用该方法的调用者,第二个参数是需要引用该方法的有参(或无参):ClassName::methodName(Forcase3)使用建议如果给函数式接口提供实例刚好满足方法引用的使用情况,可以考虑使用方法引用为函数式接口提供实例。如果您不熟悉方法引用,您仍然可以使用lambda表达式示例1:@Testpublicvoidtest1(){Consumercon1=str->System.out.println(str);con1.accept("北京");System.out.println("******************");PrintStreamps=System.out;消费者<字符串>con2=ps::println;con2.accept("beijing");}案例2:@Testpublicvoidtest2(){Comparatorcom1=(t1,t2)->Integer.compare(t1,t2);System.out.println(com1.compare(12,21));System.out.println("**************");比较器<整数>com2=整数::比较;System.out.println("com2.compare(12,3)");}案例3:@Testpublicvoidtest3(){Comparatorcom1=(s1,s2)->s1.compareTo(s2);System.out.println(com1.compare("abc","abd"));System.out.println("******************");比较器com2=String::compareTo;System.out.println("com2.compare("abd","abm")");}构造函数引用格式:类名::new要求:类似方法引用,函数式接口的抽象方法参数列表一致与构造函数参数列表。抽象方法的返回值类型为构造函数所属类的类型数组引用格式:数组类型[]::new