1.什么是lambda表达式
Lambda允许把函数作为一个方法的参数,使用Lambda表达式可以写出更简洁、更灵活的代码,而其作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
2.lambda表达式语法
Lambda表达式在Java语言中引入了一个操作符**“->”**,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分:
左侧:指定了Lambda表达式需要的所有参数
右侧:制定了Lambda体,即Lambda表达式要执行的功能。
只能应用于函数式接口(只有一个抽象方法的接口,可用@FunctionalInterface注解判断)
public class Main {
public static void main(String[] args) {
If1 f1 =()-> System.out.println("无参数 无返回值");
f1.text();
If2 f2 =(int x) ->System.out.println("单参数 无返回值"+x);
f2.text(2);
If3 f3 =(int x,int y) -> System.out.println("多参数 无返回值"+x+y);
f3.text(3,3);
If4 f4=()->{ return 4;};
System.out.println("无参数 有返回值"+f4.text());
If5 f5 =(int x)->{return x;};
System.out.println("单参数 有返回值"+f5.text(5));
If6 f6 =(int x,int y)->{return x+y;};
System.out.println("多参数 有返回值"+f6.text(6,6));
}
}
interface If1{
// 无参数 无返回值
void text();
}
interface If2{
//单参数 无返回值
void text(int x);
}
interface If3{
//多参数 无返回值
void text(int x,int y);
}
interface If4{
//无参数 有返回值
int text();
}
interface If5{
//单参数 有返回值
int text(int x);
}
interface If6{
//多参数 有返回值
int text (int x, int y);
}
3.简化规则
- 1.参数类型可以省略
- 2.只有一个参数,()可省略
- 3.只有一条语句,{}可省略
- 4.如果只有一条return ,{} return同时省略
If1 f1 =()-> System.out.println("无参数 无返回值");
f1.text();
If2 f2 = x ->System.out.println("单参数 无返回值"+x);
f2.text(2);
If3 f3 =(x,y) -> System.out.println("多参数 无返回值"+x+y);
f3.text(3,3);
If4 f4=()->4;
System.out.println("无参数 有返回值"+f4.text());
If5 f5 =x->x;
System.out.println("单参数 有返回值"+f5.text(5));
If6 f6 =(x,y)-> x+y;
System.out.println("多参数 有返回值"+f6.text(6,6));
4.方法的引用
If if1=(x,y)->x-y;
System.out.println(if1.text(10,5));
If if2 =(x,y)->x-y;
System.out.println(if2.text(2,1));
//接口
interface If{
int text(int x,int y);
}
对于以上代码如果多次有相同的需求,我们可以把重复的代码封装成一个类 ,在使用时调用即可 格式: 对象名::方法名
如果是static 则为 类名::方法名
public class Main2 {
public static void main(String[] args) {
Main2 main = new Main2();
If if1=main::text2;
System.out.println(if1.text(10,5));
If if2 =main::text2;
System.out.println(if2.text(5,10));
}
public int text2 (int x,int y){
return x-y;
}
}
interface If{
int text(int x,int y);
}
4.构造方法的引用
创建一个实体类dog 属性有id 和name
在创建两个接口 一个有参,一个无参
interface DogService{
Dog getDog();
}
interface DogService2{
Dog getDog(int id,String name);
}
代码实现
DogService dg = ()-> new Dog();
System.out.println(dg.getDog());
DogService2 dg2 =(x,y)-> new Dog(x,y);
System.out.println(dg2.getDog(1,"自政纲"));
或者引用格式
DogService new_dg = Dog::new;
System.out.println(new_dg.getDog());
DogService2 new_dg2 = Dog::new;
System.out.println(new_dg2.getDog(2,"自政纲"));
标签:int,text,System,println,返回值,out,表达式,lambda
From: https://blog.csdn.net/qq_65993561/article/details/141502003