package com.atguigu.java8;
import com.atguigu.java8.mapper.MyFun;
import java.util.Comparator;
import java.util.function.Consumer;
/**
* lambda 表达式的基础语法:引入了一个新的操作符 -> 称为箭头操作符或者lanbda操作符
* 讲lambda表达式拆成两部分
* 左侧:lambda表达式参数列表
* 右侧:lambda表达式中所需执行的功能,及lambda体
* 语法格式1:无参数,无返回值
* () -> System.out.println("hello Lambda");
* 语法格式2:有一个参数,并且无返回值
* (x) -> System.out.println(x);
* 语法格式3:有只有一个参数,小括号可以省略不写
* x -> System.out.println(x);
* 语法格式4:有两个以上参数,并且Lambda体中有多条语句,有返回值
* 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);
* 语法格式6:Lambda表达式的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”
* Comparator<Integer> com = (Integer x,Integer y) -> Integer.compare(x,y);
*
* 左右遇一括号省
* 左侧推断类型省
*
* 二:Lambda表达式需要“函数式接口”的支持
* 函数式接口:接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解@FunctionalInterface修饰
* 可以检查是否是函数式接口
*/
public class TestLambda2 {
//语法格式1:无参数,无返回值
public void test1(){
//jdk1.7前,必须是final
int num = 0;
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Hello World" + num);
}
};
r.run();
System.out.println("-----------------------------------");
Runnable r1 = () -> System.out.println("Hello Lambda" + num);
r1.run();
}
//语法格式2:有一个参数,并且无返回值
public void test2(){
//Consumer<String> con = System.out::println;
Consumer<String> con = (x) -> System.out.println(x);
//Consumer<String> con = x -> System.out.println(x);
con.accept("测试数据");
}
//语法格式4:有两个以上参数,并且Lambda体中有多条语句,有返回值
public void test3(){
Comparator<Integer> com = (x,y) -> {
System.out.println("函数式接口");
return Integer.compare(x,y);
};
}
public void test4(){
Comparator<Integer> com = (Integer x,Integer y) -> Integer.compare(x,y);
//Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
}
//需求:对一个数进行运算
public void test6(){
Integer operation = operation(100, (x) -> x * x);
System.out.println(operation);
System.out.println(operation(200, y -> y + 200));
}
public Integer operation(Integer num, MyFun<Integer> mf){
return mf.getValue(num);
}
}
lambda学习笔记1
最新推荐文章于 2023-06-13 19:47:05 发布