java基础-多线程(3)

92 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天

Lamda表达式

介绍

屏幕截图 2022-10-02 234248.jpg

  • λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念
  • 去掉了一堆没有意义的代码,只留下核心逻辑

java8新特性

  • Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
  • Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
  • 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
 a -> System.out.println("i like lamda-->"+a)

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

理解Functional Interface (函数式接口) 是学习Java8 lamda表达式的关键

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

温馨提示:函数式接口是指只有一个方法的接口

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

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

语法

lambda 表达式的语法格式如下

 (parameters) -> expression
 或
 (parameters) ->{ statements; }

以下是lambda表达式的重要特征:

  • 可选类型声明: 不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号: 一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号: 如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。

实现

事例一:
 public class Demo13_Lamda4 {
     public static void main(String[] args) {
         //6.lamda简化
         ILike like = () ->{
             System.out.println("I like lamda4");
         };
         like.lamda();
     }
 }
 ​
事例二:
 public class Demo14_LamdaCase2 {
     public static void main(String[] args) {
         // 1.lamda
         ILove love = (int a) -> {
             System.out.println("I love you -->" + a);
         };
         // 2.lamda简化1.0
         love = (a) -> {
             System.out.println("I love you -->" + a);
         };
         // 3.lamda简化2.0
         love = a -> {
             System.out.println("I love you -->" + a);
         };
         // 3.lamda简化3.0
         love = a -> System.out.println("I love you -->" + a);
 ​
         /**总结:
          * {}简略的条件是只能有一行代码,多行{}就不能简略了
          * 前提是接口为函数式接口(只能有一个方法)
          * 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上()
          */
 ​
         love.love(520);
     }
 }
 ​
 interface ILove {
     void love(int a);
 }
 ​

总结

了解java8的新特性,lambda表达式和函数式接口的概念以后,对知识有更好的总结。

\