二、Lambda 表示式
1、Lambda表达式是jdk1.8才有的新特性,在一些主流的语言中,该表达式都出现得比java早,比如javaScript语言是基于对象具有面向过程的特点。Java 为了不落伍,在2014年推出了该表达式的使用语法。编译器要改造,jvm执行引擎也要修改。
2、使用Lambda表达式的好处
在编程的时候,如果遇到要使用函数式接口(Lambda是函数式编程语言的主要特点),可以使用它,让代码的结构变得更加简洁,书写的代码量会减少。
3、函数式接口
一个接口中只能有一个抽象方法。在1.8中新出现了一个注解@FunctionInterface,它专门用来注解函数式接口,防止出现第二个抽象方法。
4、Lambda表达式的语法
()->表达式
()->{语句}
提示:(可以有参数声明)
5、使用Lambda表达式
/* new Thread(
new Runnable() {
@Override
public void run() {
System.out.println("线程执行");
}
}
).start();*/
//Lambda实现
//小括号表示调用函数式接口中唯一的方法,所以它不能有第二个方法,否则 编译器糊涂了
new Thread(()-> System.out.println("线程执行")).start();
new Thread(()-> {
System.out.println("线程执行");
System.out.println("再执行一次");
}).start();
对数组排序
Person[] persons = {new Person("aa",20),new Person("bb",5),new Person("cc",9)};
//对数组排序
/* Arrays.sort(persons,
new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.age - o2.age;
}
}
);*/
Arrays.sort(persons,
(Person o1,Person o2)->{return o1.age - o2.age;}
);
for (Person p:persons ) {
System.out.println(p);
}
提示:以后的编程中,如果需要使用匿名内部类,而且内部类的接口是函数式接口,就应当使用Lamb