网站首页 > java教程 正文
Lambda表达式
函数式编程思想概述
---强调做什么,而不是以什么形式做

面向对象的思想:
- 做一件事情,找一个能解决这个的事情的对象,调用对象的方法,完成事情
函数式编程思想
- 只要能获取到结果,谁去做的,这么做的都不重要,重视的是结果,不重视过程
传统写法和Lambda写法对比
传统写法
public class CaiNiao{
public static void main(String[] args){
//匿名内部类,实现多线程
//Runnable task = new Runnable()
Runnable task = new Runnable(){
@Override
public void run(){//覆盖重写抽象方法
System.out.println(Thread.currentThread().getName()+"新线程创建了");
System.out.println("多线程任务执行!");
}
};
new Thread(task).start();//开启线程
}
}
匿名内部类的好处与弊端
- 一方面,匿名内部类可以帮助我们省去实现类的定义;
- 另一方面,匿名内部类的语法确实太复杂了
public class CaiNiao{
public static void main(String[] args){
//匿名内部类,实现多线程
//Runnable task = new Runnable()
new Thread(new Runnable(){
@Override
public void run(){//覆盖重写抽象方法
System.out.println(Thread.currentThread().getName()+"新线程创建了");
System.out.println("多线程任务执行!");
}
}).start();//开启线程
}
}
Lambda写法
()->{}
public class CaiNiao{
public static void main(String[] args){
//匿名内部类,实现多线程
//Runnable task = new Runnable()
new Thread(()->{//覆盖重写抽象方法
System.out.println(Thread.currentThread().getName()+"新线程创建了");
System.out.println("多线程任务执行!");
}
).start();//开启线程
}
}
Lambda表达式的标准格式
由三部分组成:
- 一些参数
- 一个箭头
- 一段代码
格式:
- (参数列表)-> {一些重写方法的代码}:
解释说明格式:
- ():接口中抽象方法的参数列表,没有参数,就空着
- ->:传递的意思,把参数传递给方法体{}
- {}:重写接口的抽象方法的方法体
Lambda表达式:是可推导,可以省略
- 凡是根据上下文推导出来的内容,都可以省略书写
可以省略的内容:
- (参数列表):括号中的参数列表的数据类型,可以省略不写
- (参数列表):括号中的参数如果只有一个,那么类型和()都可以省略
- (一些代码):如果()中的代码只有一行,无论是否由返回值,都可以省略({},return,分号)
注意:要省略{},return,分号必须一起省略
- JDK1.7 版本之前,创建集合对象必须把前后的泛型都写上
- JDK1.7 版本之后,=号后边的泛型可以省略,后边的泛型可以根据前边的泛型推导出来
new Thread(()->{//覆盖重写抽象方法
System.out.println(Thread.currentThread().getName()+"新线程创建了");
}
).start();//开启线程
new Thread(()->System.out.println(Thread.currentThread().getName()+"新线程创建了")).start();//开启线程
Lambda的使用前提
- 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法;
- 使用Lambda必须具有上下文推断。
备注:有且仅有一个抽象方法的接口,成为“函数式接口”。
猜你喜欢
- 2024-09-16 java高阶面试问题java8中的CAS讲解
- 2024-09-16 java时间操作(java时间运算)
- 2024-09-16 Java学习:JDBC各类详解(jdbc的类)
- 2024-09-16 Java注解和反射学习总结(java中注解的原理)
- 2024-09-16 MacBook pro M1 JDK版本切换(mac更换jdk)
- 2024-09-16 使用Java语言从零开始创建区块链其实并不难,快来围观吧!
- 2024-09-16 java成为Python手下的一员!看我大Python如何调用java服务的!
- 2024-09-16 菜鸟IO流的操作规律笔记——java(菜鸟api接口)
- 2024-09-16 两分钟轻松搞懂联合索引,最左匹配原则?#java程序员
- 2024-09-16 菜鸟学习Java需要提前做好哪些准备?
欢迎 你 发表评论:
- 12-02快手极速版下载app(11快手极速版下载安装)
- 12-02压缩文件损坏怎么修复(压缩文件损坏怎么修复后无法打开)
- 12-02戴尔服务器售后电话(dell 服务器售后电话)
- 12-02win10系统备份还原(win10系统备份还原方法)
- 12-02电脑怎么测试麦克风有没有声音
- 12-02台式电脑usb接口无法识别设备
- 12-02melogincn登录密码(melogincn登入密码)
- 12-02苹果手机截图怎么截(苹果手机截图怎么截长图)
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)

本文暂时没有评论,来添加一个吧(●'◡'●)