1.函数式编程思想概述:
在数学中,函数就是有输入量、输出量的一套计算方案,也就是"拿什么东西做什么事情"。相对而言,面向对象过分强调"必须通过对象的形式来做事情",而函数式思想则尽量忽略面向对象的复杂语法一强调做什么,而不是以什么形式做。
2.冗余的Runnable代码:
1,
2,
打印一下:
简化代码:
照样实现:
代码还可以继续简化:
上述就是使用匿名内部类去实现多线程。
根据上述所说的情况我们进行 编程思想的转换:
要关注做什么 而不是怎么做。
当我们需要从北京到上海时,可以选择高铁、汽车、骑行或是徒步。我们的真正目的是到达上海,而如何才能到达上海的形式并不重要,所以我们一直在探索有没有比高铁更好的方式--搭乘飞机。
lambda的实现:
使用Lambdo表达式,实现多线程。
对比一下,()- >就实现了。比匿名内部类还要简单。
匿名内部类的好处与弊端:
一方面,匿名内部类可以帮我们省去实现类的定义;另一方面,匿名内部类的语法-确实太复杂了!
Lambda达式的格式:
eg:
上述代码:其中()就是ran方法的(),没有参数就空着,箭头就是把这个东西传给后面的方法体里面去。
练习:
无参数无返回值:
按照以前的学习方式:(Cook 直接在invokeCook里面做参数,不报错?老方法 是 要先做一个实现接口的实现类,实现类重写接口的抽象方法 然后再main中new实现类,再调用)
使用lambda表达式:
练习 有参数有返回值:
原:
lambda:
既:
有参数写参数 再写返回值给返回。
Lambda省略格式
eg1:
eg2:
eg3:
lambda的使用前提:
只能有一个抽象方法,两个就不行。