java8 lambda python_java8新特性1:lambda表达式和函数式接口

1、lambda的介绍:

1.1、为什么java语言需要引入lambda表达式?

java语言诞生于1995年,历史时间已经相对较长了。在其后的各种新型编程语言中,都有着lambda表达式的内容,并且受到了大家的好评,因此,java语言也相想要“抄”过来。(小声逼逼)下面是一个较为官方的解释:

1729297-20200209193428677-1545466156.png

1.2、python中的lambda表达式

a = lambda x,y,z:(x+8)*y-z

1.3、js中ES6语法中的lambda表达式(又称为箭头函数)

function foo() {

this.a = 1

let b = () => console.log(this.a)

b()

}

1.4、其他、就不一一列举了

2、java中的六种lambda的写法

java中lambda的本质:作为接口的实例

2.0、普通写法

@Test

public void test01() {

Runnable r1 = new Runnable() {

@Override

public void run() {

System.out.println("hello java8");

}

};

r1.run();

}

2.1、语法格式一:无参、无放回值的写法

@Test

public void test2() {

//Lambda表达式的写法

Runnable r = () -> System.out.println("hello java8");

}

2.2、语法格式二:Lambda 需要一个参数,但是没有放回值

@Test

public void test3() {

Consumer con = (String s) -> {

System.out.println("ssssss");

};

con.accept("sss");

}

2.3、语法格式三:数据类型可以省略,因为可以由编译器推断得出,成为“类型推断”

@Test

public void test4() {

Consumer con = (s) -> {

System.out.println("ssssss");

};

con.accept("sss");

}

2.4、语法格式四:Lambda 若只需要一个参数时,参数的小括号可以省略

@Test

public void test5() {

Consumer con = s -> {

System.out.println("ssssss");

};

con.accept("sss");

}

2.5、语法格式五:Lambda 需要两个或者两个以上的参数,多条执行语句,并且可以有放回值

@Test

public void test6() {

Comparator com1 = new Comparator() {

@Override

public int compare(Integer o1, Integer o2) {

return o1.compareTo(o2);

}

};

System.out.println(com1.compare(3,5));

System.out.println("==================================");

Comparator com2 = (o1, o2) -> {

System.out.println(o1);

System.out.println(o2);

return o1.compareTo(o2);

};

System.out.println(com2.compare(3,5));

}

2.6、语法格式六:当Lambda 体只有一条语句时,return 与大括号若有,都可以省略

@Test

public void test7() {

Comparator com2 = (o1, o2) -> o1.compareTo(o2);

System.out.println(com2.compare(3,5));

}

3、函数式接口

1729297-20200209195659670-136466030.png

函数式接口的使用,使的我们可以将方法当作参数来传递。在调用时,lambda 表达式作为参数来使用。换句话说,当一个方法的参数是 lambda 表达式时,这个参数类型一定是函数式接口。

下面是一个函数接口的例子:

/**

* 函数式接口,只有一个抽象方法的接口

*/

@FunctionalInterface

public interface MyInterface {

void method1();

// void method2();

}

java内置的4大核心函数式接口:

webp

使用举例

webp

其他的一些函数式接口:

webp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值