lambda的前提:-----》有乙個介面,並且有且只有乙個抽象方法
1、函式式程式設計思想
考慮要做什麼,而不是怎麼做
2、初體驗
實現:啟動乙個執行緒,控制台輸出,執行緒啟動了。。。
·~:定義乙個類myrunnable實現runnable介面,重寫run方法;
建立myrunnable類物件
建立thread類物件,把myrunnable的物件作為構造引數傳遞
啟動執行緒
myrunnable my=new myrunnable();·~:匿名內部類的方法thread thread = new thread(my);
thread.start();
new thread(new runnable()·~:lambda的方法}).start();
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...