JAVA8新特性Lambda基础

一、Lambda概念

lambda表达式:特殊的匿名内部类,语法更简洁。不会再生成一个.class文件。
lambda表达式允许把函数作为一个方法的参数(函数作为方法参数传递),将代码像数据一样传递。
lambda表达式的本质:作为函数式接口的实例(对象)。
如果接口中只声明了一个抽象方法,则此接口成为函数式接口。

@FunctionalInterface
public interface Runnable { 
public abstract void run();
}

注意:只有函数式接口才能使用lambda表达式。可以@FunctionalInterface注解检测

常见的函数式接口:在这里插入图片描述

二、基本语法

<函数式接口> 变量名 = (参数1,参数2)->{
方法体
}
1.举例 (a,b) -> Integer.compare(a,b);
2.格式:
->:lambda操作符或者箭头操作符
->:左边lambda形参列表(接口中抽象方法的形参列表,参数类型可以省略,1个参数时()也可以省略)
->:右边lambda体(重写抽象方法的方法体,只有一条执行语句时,return和{}都可以省略)
3. lambda表达式的使用(分6中情况介绍)
(1) 无参无返回值

 @Test
 public void test1(){
     Runnable r1 =()-> System.out.println("hello lambda");
     r1.run();
 }

(2)一个参数无返回值

@Test
public void test2(){
    Consumer<String> c1 = (String s)-> {
        System.out.println(s);
    };
    c1.accept("一个参数无返回值");
}

(3)数据类型可以省略,因为编译器推断的出,成为类型推断
int a[] = {1,2,3}; //类型推断
List list = new ArrayList<>();//类型推断

@Test
public void test3(){
    Consumer<String> c1 = (s)-> {
        System.out.println(s);
    };
    c1.accept(",数据类型可以省略,因为编译器推断的出,成为类型推断");
}

(4)一个参数,参数的小括号可以省略

@Test
public void test4(){
    Consumer<String> c1 = s-> {
        System.out.println(s);
    };
    c1.accept("一个参数,参数的小括号可以省略");
}

(5)需要两个或者以上参数,多条执行语句,并且可以有返回值

@Test
public void test5(){
    Comparator<Integer>  c1 = (a,b) -> {
        System.out.println(a);
        System.out.println(b);
        return a.compareTo(b);
    };
    int x1 = c1.compare(1,3);
    System.out.println("###############################");
    System.out.println(x1);
}

6.只有一条语句时,return,大括号都可以不写

public void  test6() {
    Comparator<Integer> c1 = (a, b) -> Integer.compare(a, b);
    int x = c1.compare(1, 3);
    System.out.println(x);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值