目前学习Java应该主要使用Java8,或者说大部分企业目前都在使用Java8。现在Java8被广泛使用,肯定有一些亮点:Lambda表达式函数式接口方??法引用和构造函数引用StreamAPI接口中的默认方法和静态方法新的时间和日期API其他新特性更快的速度和更干净的代码Less(新语法Lambda表达式添加),强大的StreamAPI,易于并行化,最小化空指针异常可选。2、为什么要用Lambda表达式?Lambda是一个匿名函数号,我们可以把一个Lambda表达式理解为一段可以传递的代码(像传递数据一样传递代码)。您可以编写更简洁、更灵活的代码。作为一种更紧凑的编码风格,Java语言的表现力得到了提升。3.Lambda表达式的基本语法Lambda表达式在Java语言中引入了新的语法元素和运算符。这个运算符是“->”,这个运算符被称为Lambda运算符或剪枝运算符。它将Lambda分为两部分:Left:指定Lambda表达式所需的所有参数。右侧:指定Lambda主体,即Lambda表达式要执行的功能。有关详细信息,请参见下面的代码示例。packagecom.szh.java8;importorg.junit.Test;importjava.util.Comparator;importjava.util.function.Consumer;/**Lambda表达式的基本语法:Java8引入了一个新的运算符"->"此运算符称为箭头运算符或Lambda运算符。箭头运算符将Lambda表达式拆分为两部分:*左:Lambda表达式的参数列表右:Lambda表达式中要执行的函数,即Lambda主体*Lambda表达式需要“函数式接口”的支持函数式接口:接口中只有一个抽象方法的接口,称为函数式接口可以用注解@FunctionalInterface修饰,可以判断是否为函数式接口*/publicclassMyTest2{/***语法格式一:无参数,无返回值*()->System.out.println("HelloWorld!!!");*/@Testpublicvoidtest1(){Runnabler1=newRunnable(){@Overridepublicvoidrun(){System.out.println("HelloWorld!!!");}}};----r1.run();----------------------");Runnabler2=()->System.out.println("HelloWorld!!!");r2.run();}}packagecom.szh.java8;importorg.junit.Test;importjava.util.Comparator;importjava.util.function.Consumer;/**Lambda表达式的基本语法:Java8引入一个新的运算符“->”这个运算符叫做箭头运算符或者Lambda运算符箭头运算符将Lambda表达式拆分为两部分:*左:Lambda表达式的参数列表右:Lambda表达式中要执行的函数Lambdabody*Lambda表达式需要“函数式接口”的支持函数式接口:接口中只有一个抽象方法的接口称为函数式接口可以用注解@FunctionalInterface修饰,可以查看是否是函数式interface*/publicclassMyTest2{/***语法格式2:一个参数,无返回值*(x)->System.out.println(x)*这种语法格式可以省略括号,等同于*x->System.out.println(x)*/@Testpublicvoidtest2(){Consumer *{@coderun}方法的一般约定是它可以*采取任何行动。**@seejava.lang.Thread#run()*/publicabstractvoidrun();}那么我们肯定可以自定义函数式接口,首先是没有泛型的自定义函数式接口。packagecom.szh.java8.two;/****/@FunctionalInterfacepublicinterfaceMyFunction{publicStringgetValue(Stringstr);}packagecom.szh.java8.two;/****/publicclassTestLambda{privatestaticStringstrHandler(Stringstr,MyFunctionmf){returnmf.getValue(str);}publicstaticvoidmain(String[]args){//去除前后空格StringtrimStr=strHandler("\t\t\t张起灵-萧哥",(str)->str.trim());System.out.println(trimStr);//转大写StringupperStr=strHandler("helloworld",str->str.toUpperCase());系统.out.println(upperStr);//部分截取StringnewStr=strHandler("学习Java",(str)->str.substring(0,5));System.out.println(newStr);让我们看一下带有泛型的函数式接口。packagecom.szh.java8.three;/****/@FunctionalInterfacepublicinterfaceMyFunction2
