Lambda 表达式的语法格式
基本结构 () -> {}
左侧 参数列表
右侧 方法体 (Lambda体)
1.无参数 无返回值 () ->System.out.println("无参数输出打印语句");
2.有一个参数 无返回值 (x) ->System.out.println("x");
3.只有一个参数 小括号可省略 x ->System.out.println("x");
解释 2,3中使用 java8 新增函数式接口Consumer accept() 方法接受一个参数 无返回值
4.多参数 有返回值
Comparator<Integer> com = (x,y) -> {
System.out.println("多参数 输出打印语句");
return Integer.compare(x,y);
}
5.方法体(Lambda 体) 只用一条语句 return 和 大括号 都可省略
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
解释 4,5中 Comparator 被java8 追加为函数式接口 compare() 方法接受两个参数 返回一个结果
6.Lambda表达式中 参数的数据类型 可省略 因为JVM编译器 上下文推断出来 即"类型推断"
1 package com.wf.zhang.java8.lamdba; 2 3 import org.junit.Test; 4 5 import java.util.Comparator; 6 import java.util.function.Consumer; 7 8 public class TestLambda4 { 9 10 @Test 11 public void test01(){ 12 13 Runnable r = new Runnable() { 14 @Override 15 public void run() { 16 System.out.println("调用run()方法"); 17 } 18 }; 19 20 r.run(); 21 22 23 //1.无参数 无返回值 24 Runnable r2 = () -> System.out.println("无参数时输出打印语句"); 25 26 r2.run(); 27 } 28 29 @Test 30 public void test02(){ 31 32 // 2.有一个参数 无返回值 33 Consumer <String> cr = (x) -> System.out.println(x); 34 cr.accept("一个参数时输出打印语句"); 35 } 36 37 @Test 38 public void test03(){ 39 // 3.只有一个参数 小括号可省略 40 Consumer <String> cr = x -> System.out.println(x); 41 cr.accept("只有一个参数 小括号可省略输出打印语句"); 42 } 43 44 45 @Test 46 public void test04(){ 47 48 //4.多参数 有返回值 49 Comparator<Integer> cp = (x,y) -> { 50 System.out.println("多参数 输出打印语句"); 51 return Integer.compare(x,y); 52 }; 53 } 54 55 @Test 56 public void test05(){ 57 58 //5.方法体(Lambda 体) 只用一条语句 return 和 大括号 都可省略 59 Comparator<Integer> cp = (x,y) -> Integer.compare(x,y); 60 61 } 62 }