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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。