天天看點

淺學lamada表達式&函數式接口

前言:

👏作者簡介:我是笑霸final,一名熱愛技術的在校學生。

📝個人首頁:​笑霸final的首頁​ 📕系列專欄::本文寫在java專欄 📧如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步👀

🔥如果感覺部落客的文章還不錯的話,👍點贊👍 + 👀關注👀 + 🤏收藏🤏

淺學lamada表達式&函數式接口

  • ​​一、 lamada簡介​​
  • ​​二、文法格式​​
  • ​​三、淺看使用方式​​
  • ​​使用方式1 ==無參、無傳回值==​​
  • ​​使用方式2 ==需要一個參數、無傳回值==​​
  • ​​使用方式3 ==資料省略類型==​​
  • ​​使用方式4 ==小括号省略式==​​
  • ​​使用方式5 ==多個參數,有傳回值==​​
  • ​​使用方式6 ==省略return==​​
  • ​​四、總結,引出函數式接口​​
  • ​​五、函數式接口​​
  • ​​5.1自己寫函數式接口​​
  • ​​5.2Java内置四大核心函數式接口​​

一、 lamada簡介

lamada是Java8的一個新特性。

Lambda 表達式,也可以稱為閉包,它是推動 Java 8 釋出的最重要的新特性。

lamada是一個匿名函數,可以了解為一段可以傳遞的代碼。提升java語言表達能力!

本質:lamada就是函數式接口的實列

​​

​對接口的要求:隻有一個抽象方法(函數式接口)。​

二、文法格式

(參數) ->表達式
    或者
(參數) -> {語句; }      

代碼實列講解

public class java1 {
    public static void main(String[] args) {
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我是笑霸final");
            }
        };
        r1.run();
        System.out.println("/*******************lamada重寫*********************/");
        Runnable r2= () -> System.out.println("支援笑霸final");
        r2.run();
    }      

結果:

淺學lamada表達式&函數式接口

代碼分析

淺學lamada表達式&函數式接口

三、淺看使用方式

使用方式1 無參、無傳回值

這種方式就是上面的列題的方式;

淺學lamada表達式&函數式接口

使用方式2 需要一個參數、無傳回值

淺學lamada表達式&函數式接口

使用方式3 資料省略類型

因為可由編譯器推測出稱為類型推斷
public class LamadaTest1 {
    public static void main(String[] args) {
        Consumer<String> t=(s)-> {
            System.out.println(s);
        };
        t.accept("類型推斷");
    }
}      
淺學lamada表達式&amp;函數式接口
因為 ​

​Consumer<String> 中<>裡面已經有類型了 那麼參數清單就可以省略​

使用方式4 小括号省略式

當lamada隻有一個參數時,參數的小括号可以省略
public class LamadaTest1 {
    public static void main(String[] args) {
        Consumer<String> t= s -> {
              System.out.println(s);
          };
         t.accept("類型推斷,小括号可以省略");
    }
}      
淺學lamada表達式&amp;函數式接口

使用方式5 多個參數,有傳回值

public class LamadaTest1 {
    public static void main(String[] args) {
        Comparator<Integer> T= (t1,t2) -> {
            System.out.println(t1);
            System.out.println(t2);
            return t1.compareTo(t2);
        };
        System.out.println(T.compare(10, 12));

    }
}      
淺學lamada表達式&amp;函數式接口

使用方式6 省略return

當lamada體隻有一條語句時,return和大括号都可以省略
public class LamadaTest1 {
    public static void main(String[] args) {
        Comparator<Integer> T= (t1,t2) -> t1.compareTo(t2);
        System.out.println(T.compare(10, 12));
    }
}      
淺學lamada表達式&amp;函數式接口

四、總結,引出函數式接口

箭頭的左邊:

1.參數類型可以省略(類型推斷)

2.如果參數有且隻有一個,()這個也可以省略

箭頭的右邊:

1.lamada體 隻有一條語句 大括号可以省略以及return關鍵字

1.1:有return的情況 ,在滿足1的情況下如果大括号省略了return一定要省略

​​

​對接口的要求:隻有一個抽象方法(函數式接口)。​

五、函數式接口

1.隻包含一個抽象方法的接口,稱為函數式接口。

2.你可以通過Lambda表達式來建立該接口的對象。(若Lambda表達式抛出一個受檢異常,那麼該異常需要在目标接口的抽象方法上進行聲明)。

3.我們可以在任意函數式接口上使用@FunctionalInterface注解,這樣做可以檢查它是否是一個函數式接口,同時javadoc也會包含一條聲明,說明這個接口是一個函數式接口。

5.1自己寫函數式接口

@FunctionalInterface
interface my{
    void method1();
}      

@FunctionalInterface隻是檢驗作用

寫好後 我們就可以自己寫lamada表達式了

public class LamadaTest1 {
    public static void main(String[] args) {
        my my=()-> System.out.println("自己的函數式接口");
        my.method1();
    }
}      

5.2Java内置四大核心函數式接口