Java中Lambda表达式的简介说明
下文讲述Java中Lambda表达式的简介说明,如下所示:
java8 Lambda表达式测试
Lambda表达式
Lambda表达式是Java8中的重要特性Lambda允许将函数作为一个方法的参数(函数作为参数传递进方法中) --------使用Lamda的优点--------- 使用Lambda表达式可使代码变得更加简洁紧凑
Lambda表达式语法
(parameters) -> expression
或
(parameters) ->{ statements; }
Lambda表达式的相关说明:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号
可选的大括号:如果主体包含了一个语句,就不需要使用大括号
可选的返回关键字::如果主体只有一个表达式返回值则编译器会自动返回值
大括号需要指定表达式返回了一个数值
Lambda表达式示例分享
//1.不需要参数,返回值为 5 () -> 5 //2.接收一个参数(数字类型),返回其3倍的值 x -> 3 * x //3.接受2个参数(数字),并返回他们的差值 (x, y) -> x – y //4.接收2个int型整数,返回两个数的积 (int x, int y) -> x * y //5.接受一个string 对象,输出相关信息 (String s) -> System.out.print(s)例:
java8 Lambda表达式测试
public class Java8Tester {
public static void main(String args[]){
Java8Tester tester = new Java8Tester();
// 类型声明
MathOperation addition = (int a, int b) -> a + b;
// 不用类型声明
MathOperation subtraction = (a, b) -> a - b;
// 大括号中的返回语句
MathOperation multiplication = (int a, int b) -> { return a * b; };
// 没有大括号及返回语句
MathOperation division = (int a, int b) -> a / b;
System.out.println("8 + 7 = " + tester.operate(8,7, addition));
System.out.println("8 - 7 = " + tester.operate(8,7, subtraction));
System.out.println("8 x 7 = " + tester.operate(8,7, multiplication));
System.out.println("100 / 20 = " + tester.operate(100,20, division));
// 不用括号
GreetingService test1 = message ->
System.out.println("Hello " + message);
// 用括号
GreetingService test2 = (message) ->
System.out.println("Hello " + message);
test1.printInfo("java265.com");
test2.printInfo("Java教程");
}
interface MathOperation {
int operation(int a, int b);
}
interface GreetingService {
void printInfo(String message);
}
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a, b);
}
}
运行以上脚本,将输出以下信息 $ javac Java8Tester.java $ java Java8Tester 8 + 7 = 15 8 - 7 = 1 8 x 7 = 56 100 / 20 = 2 Hello java265.com Hello Java教程
Lambda表达式注意事项:
1.Lambda表达式用于定义行内执行的方法类型接口,
如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法
又定义printInfo运行
2.Lambda表达式免去了使用匿名方法的麻烦
Java简单但是强大的函数化的编程能力
变量作用域
在Lambda表达式内部不能修改外部的局部变量
public class Java8Tester {
final static String salutation = "Hello! ";
public static void main(String args[]){
testService test1 = message ->
System.out.println(salutation + message);
test1.printInfo("Java265.com");
}
interface testService {
void printInfo(String message);
}
}
-----运行以上代码,将输出以下信息----
$ javac Java8Tester.java
$ java Java8Tester
Hello! Java265.com
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


