lambda表示式初體驗

2022-08-20 02:09:15 字數 1395 閱讀 8908

lambda的前提:-----》有乙個介面,並且有且只有乙個抽象方法  

1、函式式程式設計思想

考慮要做什麼,而不是怎麼做

2、初體驗

實現:啟動乙個執行緒,控制台輸出,執行緒啟動了。。。

·~:定義乙個類myrunnable實現runnable介面,重寫run方法;

建立myrunnable類物件

建立thread類物件,把myrunnable的物件作為構造引數傳遞

啟動執行緒

myrunnable my=new myrunnable();

thread thread = new thread(my);

thread.start();

·~:匿名內部類的方法

new thread(new runnable() 

}).start();

·~:lambda的方法

new thread(()->).start();

3、lambda的標準格式

從匿名內部類中,看出重寫run方法。

·~:方法形式為空,說明呼叫方法不需要傳遞引數

·~:方法返回值型別為void,說明沒有方法返回。

·~:方法體的內容,是具體要做的事情。

lambda表示式:()為空,可以當作方法形式引數為空 -》:指向要做的事情 {}包含**塊,可以當作方法體中的內容。

格式:(形式引數)->

useaddable((int x,int y)->);

引數型別可以省略,但是多個引數的情況下,不能只省略乙個。如果引數有且僅有乙個,那麼小括號可以省。如果**塊的語句只有一句,可以省略大括號和分號。

如果有return,那麼return也要省略。。

useaddable((x, y)->);useaddable(x->);

useaddable(x->x);

注意:::::

1、使用lambda必須有介面,並且要求介面中有且僅有乙個抽象方法

2、必須有上下文環境,才能推到出lambda對應的介面

根據區域性變數的賦值得知lambda對應的介面:runnbler=()-》system.out.printly('lambda')

根據呼叫方法的引數得知lambda對應的介面:new thred(()-》system.out.printly('lambda').start();

匿名內部類和lambda的區別

所需型別不同:

·~:匿名內部類,可以是介面,也可以是抽象類,還可以是具體類

·~:只能是介面

使用限制不同

·~:如果介面中有且僅有乙個抽象方法,可以使用lambda,也可以匿名內部類

·~:介面多於1個,就只能匿名內部類,不能lambda表示式。。

c 3 0 初體驗 2 Lambda表示式

c 2.0的匿名方法允許我們以內聯的方式來實現委託,而c 3.0的lambda表示式允許我們使用一種更加接近人的思維,更加自然的方式來實現類似匿名方法的方式。計算機的發展告訴我們,人們對計算機上的研究都是不斷在趨近於人的思維,而不是計算機的思維,比如我們已開始使用的組合語言,然後出現了高階語言,物件...

正規表示式初體驗

正規表示式 什麼是正規表示式?如何而來?正則為js帶來了什麼?由乙個案例引出正規表示式 var str jadfjladjflnvnal23245,45234532 調出字串之中的所有的數字常規的辦法利用迴圈 var str jdka jf1231231jkd af931j1k2l 31k23j1k...

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...