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