1.函数式编程思想
相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。
面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。
函数式编程思想: 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程 。
2.冗余的Runnable代码
传统写法:
public static void main(String[] args) {
//创建Runnable接口的实现类对象
RunnableImpl run = new RunnableImpl();
//创建Thread类对象,构造方法中传递Runnable接口的实现类
Thread t = new Thread(run);
//调用start方法开启新线程,执行run方法
t.start();
/*
创建Runnable接口的实现类,重写run方法,设置线程任务
*/
public class RunnableImpl implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"新的线程创建了");
}
}
简化一:匿名内部类:
//简化代码,使用匿名内部类,实现多线程程序
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"创建了新线程");
}
}).start();
3.Lambda的更优写法
2014年3月Oracle所发布的Java 8(JDK 1.8)中,加入了Lambda表达式的重量级新特性,借助Java 8的全新语法,上述 Runnable 接口的匿名内部类写法可以通过更简单的Lambda表达式达到等效:
//使用lambda表达式,实现多线程
new Thread(()-> {
System.out.println(Thread.currentThread().getName() + "新线程创建了");
}
).start();
核心代码:
() -> { System.out.println(“新线程创建了”) }
这段代码和刚才的执行效果是完全一样的,可以在1.8或更高的编译级别下通过。从代码的语义中可以看出:我们启动了一个线程,而线程任务的内容以一种更加简洁的形式被指定。
4.Lambda的标准格式
1.一些参数
2.一个箭头
3.一段代码
Lambda表达式的标准格式为:
(参数类型 参数名称) -> { 代码语句 }
格式说明:
1.小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
2. -> 是新引入的语法格式,代表指向动作。
3. 大括号内的语法与传统方法体要求基本一致
代码演示: