Java8开始,支持函数式编程,什么是函数式编程?
函数式编程(Functional Programming, FP)是一种编程范式,它强调使用函数来处理数据的计算。这个名字来源于这种范式对函数的重视,其中“函数”指的是数学意义上的函数,即一种关系,在这种关系中,每个输入值都对应一个唯一的输出值,而且同样的输入总是会产生同样的输出。即函数的确定性。意思就是函数的每个输入值(自变量)映射到唯一的输出值(因变量)。类似于接口的幂等性,不过幂等性指的是同样的数据经过一段操作过程,执行的结果不会发生改变,强调的是过程,而函数的确定性指的是一个数学的概念。
一、什么是Lambda表达式?
Lambda表达式是一种简洁、可传递的匿名函数,它可以作为参数传递给方法或存储在变量中。
目的是解决面向对象开发中繁琐的代码处理。用简洁、可传递的匿名函数语法而简化代码开发。
Lambda表达式的基本语法如下:
接口名 变量名 = Lambda表达式
无参数的: ()->{}
有参数的:(parameters) -> expression 或 (parameters)->{statements; }
parameters:Lambda表达式的参数列表,可以省略类型声明,如果只有一个参数且类型可以推导,则圆括号也可以省略。
expression:如果Lambda表达式只包含一个表达式,则可以直接返回该表达式的值。
statements:如果Lambda表达式包含多个语句,则需要用花括号括起来,并显式包含 return 语句(如果需要返回值)。
Lambda表达式的几种示例:
示例 1:无参数的 Lambda表达式
Runnable run = () -> System.out.println("Hello, world!");
new Thread(run).start();
示例 2:带一个参数的 Lambda表达式
ActionListener listener = event -> System.out.println("Button clicked!");
button.addActionListener(listener);
示例 3:带多个参数的 Lambda表达式
BinaryOperator<Integer> add = (a, b) -> a + b;
System.out.println(add.apply(1, 2)); // 输出 3
示例 4:带类型声明的 Lambda表达式
BinaryOperator<Integer> multiply = (Integer a, Integer b) -> a * b;
System.out.println(multiply.apply(2, 3)); // 输出 6
示例 5:带多个语句的 Lambda表达式
BinaryOperator<Integer> subtract = (a, b) -> {
int result = a - b;
return result;
};
System.out.println(subtract.apply(5, 3)); // 输出 2
Lambda表达式可以用于任何需要函数对象的地方,例如,在实现接口的方法时,或者在创建线程时。
// 使用 Lambda表达式实现 Runnable
Runnable run = () -> System.out.println("Hello, world!");
new Thread(run).start();