Java之lambda表达式

一、lambda表达式的写法

package test;

//构造线程的两种方式:1、实现Runnable接口  2、继承Thread类
public class Test14 {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyThread());
        thread.start();

        Thread t2 = new Thread(new Runnable() { //匿名内部类
            public void run() {
                System.out.println("run2");
            }
        });
        t2.start();

        //lambda表达式
        //使用条件:
        //1、花括弧里面必须传的是接口
        //2、接口里只能有一个方法
        //()里代表的是 接口里面的抽象方法传的参数,没有就写()
        //箭头后面的是 抽象方法的内容
        Thread t3 = new Thread(() -> { //传的是接口
                System.out.println("run3");
            }
        );
        t3.start();
    }

}
class MyThread implements Runnable{

    public void run() {
        System.out.println("run");
    }
}

lambda表达式是匿名内部类的简写,匿名内部类是new Thread()对象的简写。

二、lambda表达式的使用条件

1、花括弧里面必须传的是接口

2、接口里只能有一个方法

 

三、lambda表达式写法的含义

  • ()里代表的是 接口里面的抽象方法传的参数,没有就写()
  • 箭头后面的是 抽象方法的内容
    Thread t3 = new Thread( () -> { //传的是接口
                    System.out.println("run3");
                }
    );

四、lambda表达式的简写

  • 如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式

  • 如果接口的参数只有一个,就可以省略小括弧,直接写参数

public class Test15 {
    int x = 3;
    int y = 4;
    public static void aoo(Aoo aoo){
        int z =aoo.f(3,4);
        System.out.println(z);
    }
    public static void boo(Boo boo){
        int z =boo.g(3);
        System.out.println(z);
    }

    public static void main(String[] args){
        aoo(new Aoo() { //匿名内部类
            @Override
            public int f(int x, int y) {
                return x*y;
            }
        });

        aoo((x,y) -> { //使用lambda表达式
            return x+y;
        });

        aoo((x,y) -> x+y+1); //lambda表达式简写,如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式
        boo(x -> x+3); //lambda表达式简写,如果接口的参数只有一个,就可以省略小括弧,直接写参数
    }
}
interface Aoo{
    int f(int x,int y);
}
interface Boo{
    int g(int x);
}

 

五、tips小技巧

使用IntelliJ IDEA这个工具写lambda表达式,如果写的正确,会出现特有标志:

 

 

 

posted @ 2019-07-04 20:28  意如柳  阅读(658)  评论(0编辑  收藏  举报