•  
今日主题:lambda表达式(一)

简介

lambda表达式是什么呢?是JDK8的一个新特性,他的优势有很多,可以简化很多操作,我们现在来讲讲吧!

环境

  • JDK8

什么是lambda表达式

Lambda是JAVA8添加的一个新的特性。说白了,Lambda就是一个匿名函数。

为什么要用它

使用Lambda表达式可以对一个接口进行非常简洁的实现。

lambda对接口的要求

虽然可以使用Lambda表达式对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现。要求接口中定义的必须要实现的抽象方法只能是一个。

如何来保证抽象方法只有一个呢?

加一个注解@FunctionalInterface

列如:

//这个注解是用来限制下面这个接口只能有一个抽象方法
@FunctionalInterface
interface Comparator{
 int compare(int a,int b);
}

lambda基础语法

//无返回值,无参数
@FunctionalInterface
public interface LambdaNoneReturnNoneParameter {
 void test();
}

//无返回值,单个参数
@FunctionalInterface
public interface LambdaNoneReturnSingleParameter {
 void test(int n);
}

//无返回值,多个参数
@FunctionalInterface
public interface LambdaNoneReturnMutipleParameter {
 void test(int m,int n);
}

//单个返回值,无参数
@FunctionalInterface
public interface LambdaSingleReturnNoneParameter {
 int test();
}

//单个返回值,单个参数
@FunctionalInterface
public interface LambdaSingleReturnSingleParameter {
 int test(int n);
}

//单个返回值,多个参数
@FunctionalInterface
public interface LambdaSingleReturnMultipleParameter {
 int test(int a,int b);
}

lambda表达式(一)_编程

主函数:

可以通过以下的操作来实现函数的简化操作

public class Syntax1 {
 public static void main(String[] args) {
  //1.lambda表达式的基础语法
  //lambda是一个匿名函数
  //参数列表 方法体
  //():用来描述参数列表
  //{}:用来描述方法体
  //->lambda运算符,读作goes to
  
  //无参无返回
  LambdaNoneReturnNoneParameter lambda1=()->{
   System.out.println("hello world");
  };
  lambda1.test();//hello world
  
  //无返回值,单个参数
  LambdaNoneReturnSingleParameter lambda2=(int a)->{
   System.out.println(a);
  };
  lambda2.test(10);//10
  
  //无返回值,多个参数
  LambdaNoneReturnMutipleParameter lambda3=(int a,int b)->{
   System.out.println(a+" "+b);
  };
  lambda3.test(2, 3);//2 3
  
  //有返回值,无参数
  LambdaSingleReturnNoneParameter lambda4=()->{
   return 1;
  };
  System.out.println(lambda4.test());//1
  
  //有返回值,一个参数
  LambdaSingleReturnSingleParameter lambda5=(int a)->{
   return a;
  };
  System.out.println(lambda5.test(5));//5
  
  //有返回值,多个参数
  LambdaSingleReturnMultipleParameter lambda6=(int a,int b)->{
   return a+b;
  };
  System.out.println(lambda6.test(2, 3));//5
 }
}

Lambda第一期结束了,期待与你的第二期!


lambda表达式(一)_编程_02