【從零開始學 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 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

留言

這個網誌中的熱門文章

最新入門零基礎【從零開始學 Java 程式設計】線上教學課程目錄

NS - Nintendo Switch 遊戲比價網

【從零開始學 Kotlin 程式設計】Android Kotlin 線上教學課程目錄