面向对象思想: 找能解决问题的对象 ,调用对象的方法
函数式编程思想:只要能获取到结果,强调做什么,而不是以什么形式去做
实现Runnable代码:
简化:省去了类名称,额外定义接口的实现
编程思想转换:
传递一段代码,才是我们真正的目的,创建对象只是受限于面向对象语法而不得不采取的一种手段和方法。如果我们将关注点从“怎么做”回归到“做什么”的本质上,过程与形式其实并不重要
lambda表达式的引入:
使用lambda表达式的重点就是延迟执行。(只在必要的情况才运行代码)
Lambda标准格式:
():接口中抽象方法的参数列表,没有参数为空;有参数就写多个参数,用逗号分隔
-> :传递,把参数传递给方法体{}
{}:重写接口的抽象方法的方法体
例:lambda实现cook接口
如果方法的参数是一个函数式接口,那么可以使用lambda表达式化简
例:person类对age升序排序
例:计算器Calculator接口,内涵calc可以将两个int数字相加得到和值
lambda省略格式
可推导,可省略:凡是根据根据上下文推导出来的内容,都可以省略书写
参数类型:括号中参数列表的数据类型,可以省略不写
参数列表:括号中的参数如果只有一个,那么类型和()都可以省略
return:如果代码只有一行,那么{}和return;都可以不写
上例调用calula接口可以写为
对person按年龄排序可写为:
字符串按长度升序排序
泛型后面可以不写(可推导)
Lambda使用前提
1、lambda必须有接口,且要求接口中有且仅有一个方法
有且只有一个抽象方法的接口,称为“函数式接口”
2、必须有上下文推断
函数式接口:
【java笔记】函数式接口_暮色_年华的博客
lambda与函数式接口结合:
lambda与runnable接口:打印10次hello
lambda与consumer结合:指出已经迭代的次数