欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中Lamda表达式讲解

程序员文章站 2022-03-12 11:47:18
lamda表达式 1、λ 希腊字母表中排序第十一位的字母,英语名称为 lamda 2、避免匿名内部类定义过多 3、可以让你的代码看起来很简洁 4、去掉了一堆没有意义的代码,留下...

lamda表达式

java中Lamda表达式讲解

  • 1、λ 希腊字母表中排序第十一位的字母,英语名称为 lamda
  • 2、避免匿名内部类定义过多
  • 3、可以让你的代码看起来很简洁
  • 4、去掉了一堆没有意义的代码,留下核心的逻辑
  • 5、其实质属于函数式编程的概念

(params)-> expression[表达式]

(params) -> statement[语句]

(params) -> {statements}

a -> system.out.println("i like lamda-->"+a)

new thread (()->system.out.println(“多线程学习。。。。”)).start();

怎么理解

  • 1、理解functional interface(函数式接口)是学习java8 lamda表达式的关键所在。
  • 2、函数式接口的定义:

任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

public interface runnable{
	public abstract void run();
}

对于函数式接口,我们可以通过lamda表达式来创建该接口的对象

代码推导λ表达式

package com.haiyang.lamda;

public class testlamda01 {

    //3、静态内部类,同样实现ilike接口
    static class like2 implements ilike{
        @override
        public void lamda() {
            system.out.println("i like lamda2");
        }
    }

    public static void main(string[] args) {
        ilike like = new like();
        like.lamda();
        like = new like2();
        like.lamda();

        //4、局部内部类
        class like3 implements ilike{
            @override
            public void lamda() {
                system.out.println("i like lamda3");
            }
        }
        like = new like3();
        like.lamda();

        //5、匿名内部类,没有类的名称。必须借助接口或者父类
        like = new ilike() {
            @override
            public void lamda() {
                system.out.println("i like lamda4");
            }
        };
        like.lamda();

        //6、lamda表达式
        like = ()->{
            system.out.println("i like lamda5");
        };
        like.lamda();
    }
}


//1、定义一个只有一个抽象方法的接口
interface ilike{
    abstract void lamda();
}

//2、实现类
class like implements ilike{

    @override
    public void lamda() {
        system.out.println("i like lamda1");
    }
}

输出:

java中Lamda表达式讲解

带一个参数的lamda简化

package com.haiyang.lamda;

public class testlamda02 {

    public static void main(string[] args) {
        ilive live = null;

        //lamda简化
        live = (int a)->{
            system.out.println("i live you"+a);
        };
        live.live(1);

        //lamda简化参数类型
        live = (a)->{
            system.out.println("i live you"+a);
        };
        live.live(2);

        //lamda简化括号
        live = a->{
            system.out.println("i live you"+a);
        };
        live.live(3);

        //lamda简化花括号(只有一条语句时)
        live = a->system.out.println("i live you"+a);
        live.live(4);
    }

}

interface ilive{
    abstract void live(int a);
}

输出:

java中Lamda表达式讲解

带多个参数的lamda简化

package com.haiyang.lamda;

public class testlamda02 {

    public static void main(string[] args) {
        ilive live = null;

        //lamda简化
        live = (int a,int b)->{
            system.out.println("i live you"+a+b);
        };
        live.live(1,1);

        //lamda简化参数类型(要去掉就要都去掉)
        live = (a,b)->{
            system.out.println("i live you"+a+b);
        };
        live.live(2,2);


        //lamda简化花括号(只有一个语句时)
        live = (a,b)->system.out.println("i live you"+a+b);
        live.live(3,3);
    }

}

interface ilive{
    abstract void live(int a,int b);
}

输出:

java中Lamda表达式讲解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。