lambda表达式

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,"自政纲"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值