Lambda表达式

一、Lambda表达式的标准格式

匿名内部类的方式实现run()方法代码分析:

  • 方法的形式参数为空,说明调用方法时不需要传递参数
  • 方法返回值类型为void,说明方法的执行没有结果返回
  • 方法体中的内容,是我们具体要做的事情
new Thread(new Runnable(){
    @Override
    public void run(){
        System.out.println("多线程启动了");
    }
})

Lambda的实现方式实现run()方法代码分析:

  • ():里面没有内容,可以看成是方法形式参数为空
  • ->:用箭头表示后面要做的事情
  • {}:包含一段代码,我们称之为代码块,可以看作是方法体内的内容
new Thread(()->{
    System.out.println("多线程启动了");
})

组成Lambda表达式的三要素:形式参数、箭头、代码块

Lambda表达式的格式:

  • 格式:(形式参数)->{代码块}
  • 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
  • ->:由英文和大于符合组成,固定写法。代表指向动作。
  • 代码块:是我们要具体要完成的事情。

二、Lambda表达式的练习

Lambda表达式使用的前提:

  • 有一个接口
  • 接口中有一个抽象方法且仅有一个抽象方法

练习1:没有形式参数以及返回类型的Lambda表达式练习

  1. 定义一个Eatable接口,里面定义一个抽象方法:void eat();
  2. 定义一个测试类EatableTest,在测试类中提供两个方法。一个是useEatable(Eatable e),一个主方法。
  • Eatable接口:
public interface Eatable{
    void eat();
}
  • EatableTest测试类
public class EatableTest{
    public static main(String[] args){
        //Lambda表达式
        useEatable(()->{
            System.out.println("我很能吃!!!");
        })
    }
   private static void useEatable(Eatable e){
       e.eat();
   }
}

练习2:带有参数,但是没有返回值的Lambda表达式练习

  1. 定义一个接口Study,里面定义一个抽象方法:void studyJava(String s);
  2. 定义一个测试类EatableTest,在测试类中提供两个方法。一个是useStudy(Study s),一个主方法。
  • Study接口:
public interface Study{
    void studyJava(String s);
}
  • EatableTest测试类
public class EatableTest{
    public static main(String[] args){
        //Lambda表达式
        useEatable((String s)->{
            System.out.println(s);
        })
    }
   private static void useStudy(Study s){
       s.studyJava("java yyds");
   }
}

练习3:带有参数,以及有返回值的Lambda表达式练习

  1. 定义一个接口Computer,里面定义一个抽象方法:int add(int x,int y);
  2. 定义一个测试类EatableTest,在测试类中提供两个方法。一个是useComputer(Computer c),一个主方法。
  • Computer接口:
public interface Computer{
    int add(int x,int y);
}
  • EatableTest测试类
public class EatableTest{
    public static main(String[] args){
        //Lambda表达式
        useComputer((int x,int y)->{
           return x + y;
        })
    }
   private static void useComputer(Study s){
      int sum =  s.add(2,3);
       System.out.sum(sum);
   }
}

三、Lambda表达式省略规则

  1. 参数类型可以省略,但是有多个参数的情况下,不能只省略一个。
  2. 如果参数有且仅有一个,那么小括号可以省略
  3. 如果代码块的语句只有一条,可以省略大括号以及分号,甚至是return也可以省略

四、Lambda表达式的注意事项

  1. 使用lambda表达式必须要有接口,并且要求接口中有且仅有一个抽象方法
  2. 必须要有上下文环境才能推导出Lambda对应的接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值