行文至此,java基础系列的文章更新的已经差不多了,现在开始会总结一些java8的新特性,然后向java web和框架方向靠近,并不断完善基础知识!
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 的语言表达能力得到了提升。
public class Demo {public static void main(String[] args) {// 定制排序Comparator integerComparator = new Comparator(){@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare1 = integerComparator.compare(12,21);System.out.println(compare1);// 定制排序的Lambda表达式写法Comparator com = (o1,o2) -> Integer.compare(o1,o2);int compare2 = com.compare(12,21);System.out.println(compare2);}
}
可以看到,定制排序转换为Lambda表达式后写法非常简单,只需一行代码,那么接下来我们就来学习一下Lambda的语法规则,即怎么样写Lambda表达式!
(o1,o2) -> Integer.compare(o1,o2);
-> :Lambda操作符或者箭头操作符
-> 左边:Lambda形参列表(其实就是接口中抽象方法的形参列表)
-> 右边:Lambda体:(其实就是重写的抽象方法的方法体)
// 语法格式一:无参,无返回值// 正常写法Runnable r1 = new Runnable(){@Overridepublic void run() {System.out.println("我是阿牛!");}};r1.run();// Lambda表达式写法Runnable r2 = () -> System.out.println("我是阿牛!");r2.run();
// 语法格式二:有一个参数,无返回值// 正常写法Consumer con = new Consumer() {@Overridepublic void accept(String s) {System.out.println(s);}};con.accept("你好!");// Lambda表达式写法Consumer con1 = (String s) ->{ System.out.println(s); };con1.accept("你好呀!");
在上面语法格式二的基础上
// 语法格式三:数据类型可以省略(类型推断)// 正常写法Consumer con2 = new Consumer() {@Overridepublic void accept(String s) {System.out.println(s);}};con2.accept("你好!");// Lambda表达式写法 - 数据类型可以省略(类型推断)Consumer con3 = (s) ->{ System.out.println(s); };con3.accept("你好呀!");
在上面语法格式三的基础上
// 语法格式四:Lambda若只有一个参数,参数的小括号可以省略// 正常写法Consumer con4 = new Consumer() {@Overridepublic void accept(String s) {System.out.println(s);}};con4.accept("你好!");// Lambda表达式写法 - Lambda若只有个参数,参数的小括号可以省略Consumer con5 = s ->{ System.out.println(s); };con5.accept("你好呀!");
// 语法格式五:Lambda需要两个或者两个以上的参数,多条执行语句,并且可以有返回值// 正常写法Comparator com1 = new Comparator(){@Overridepublic int compare(Integer o1, Integer o2) {System.out.println(o1);System.out.println(o2);return Integer.compare(o1,o2);}};int compare1 = com1.compare(12,21);System.out.println(compare1);// Lambda表达式写法Comparator com2 = (o1,o2) -> {System.out.println(o1);System.out.println(o2);return Integer.compare(o1,o2);};int compare2 = com2.compare(12,21);System.out.println(compare2);
// 语法格式六:当Lambda体只有一条语句时,return 与大括号若有,都可以省略// 正常写法Comparator com1 = new Comparator(){@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o1,o2);}};int compare1 = com1.compare(12,21);System.out.println(compare1);// Lambda表达式写法 - 当Lambda体只有一条语句时,return 与大括号若有,都可以省略Comparator com2 = (o1,o2) -> Integer.compare(o1,o2);int compare2 = com2.compare(12,21);System.out.println(compare2);
Lambda表达式在java中与其它语言是不同的,Lambda在其它语言中是个函数,匿名函数,而在java中则作为接口的实例!
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门