【從零開始學 Java 程式設計】Java 8 - Lambda 表達式

【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。

Java 8 - Lambda 表達式

Java 8 最重大的一個更新,就是加入 Lambda 表達式,Lambda 讓程式碼看起來更簡潔也提高執行效能,原本可能需要寫很多行程式碼,可以縮減成一行,如最常見執行緒寫法:

過往傳統:

Runnable runnbale = new Runnable() {
     public void run() {
      System.out.println("HKT線上教室");
     }
 };

採用 Lambda 表達式:

Runnable runnbale = () -> System.out.println("HKT線上教室");

查看官方 Runnable 源始碼

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

Lambda 語法

//第一種:沒有大括號,可以表達單行程式區塊
(輸入參數,輸入參數,...) -> 單行邏輯程式區塊


//第二種:大括號,可以表達多行程式區塊
(輸入參數,輸入參數,...) -> { ... 多行邏輯程式區塊 ...}

四種輸入參數寫法:

第一種,無任何參數,如:

()

第二種,一個參數: (x)

(x)

第三種,多個參數並指定資料類型

(int x,int y)

第四種,多個參數(自動推斷資料型):

(x,y)

五種程式邏輯區塊表達式:

第一種,無任何程式區塊:

{}

第二種,單行不回傳值:

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

第三種,多行不回傳值:

{
    ...
 System.out.println("...");
    ...
}

第四種,單行,回傳值:

x+y

第五種,多行,回傳值:

{
    ...程式邏輯運算...
    ...程式邏輯運算...
    ...程式邏輯運算...
    return x+y;
}

範例:我的計算機

MyCalc.java

@FunctionalInterface
public interface MyCalc {
    void exec(int a, int b);
}

其中 @FunctionalInterface ,此注解是提醒編譯器,檢查該介面是否只有一個抽象方法,若不只一個的話,違反規則則會畫紅色蚯蚓線,提醒開發者,需進行調整。另外也可以防止未來自己或其他開發者,不小心增加方法,破壞了 Lambda 定義的 Functional Interface 即 SAM (Single Abstract Method interfaces) 介面。方法介面一定是 Interface 且裡面只能有一個抽象方法。

Main.java

public class Main {
    public static void main(String[] args) {

        //===傳統寫法===
        MyCalc calc1 = new MyCalc() {
            @Override
            public void exec(int a, int b) {
                System.out.println("calc1: " + (a + b));
            }
        };
        calc1.exec(1, 2);

        //===Lambda寫法===
        MyCalc calc2 = (a, b) -> System.out.println("calc2: " + (a + b));
        calc2.exec(1, 2);
    }
}

那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)