国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

「Java 8 函數(shù)式編程」讀書筆記——lambda表達式

lx1036 / 2393人閱讀

摘要:本文是函數(shù)式編程第二章的讀書筆記。的語法簡化了使用匿名內部類時的模板代碼,讓程序員專注于編寫想要執(zhí)行的行為,也讓代碼更加簡潔易讀。中最重要的函數(shù)接口類型推斷為新成員表達式提供了類型推斷的支持,在不需要聲明參數(shù)類型的表達式中表現(xiàn)的有為明顯。

本文是「Java 8 函數(shù)式編程」第二章的讀書筆記。

Lambda引入的變化

Lambda表達式,是一種緊湊的、傳遞行為的方式,從編程思想上來講,就是代碼即數(shù)據(jù)

過去的Java中,存在大量的匿名內部類的使用,會新建一個匿名內部類傳入調用的方法中。這種傳統(tǒng)的方式,會造成冗余的、不易閱讀的代碼。

于是Lambda誕生了。Lambda的語法簡化了使用匿名內部類時的模板代碼,讓程序員專注于編寫想要執(zhí)行的行為,也讓代碼更加簡潔易讀。

Lambda表達式的形式
Runnable runable = () -> System.out.println("Hello Lambda");//1
runable = () -> {
  System.out.print("Hello");
  System.out.println(" Lambda");
};//2
ActionListener listener = event -> System.out.println("get event");//3
BinaryOperator add = (x, y) -> x + y;//4
BinaryOperator minux = (Long x, Long y) -> x - y;//5

常見的Lambda表達式有以上5種,每個Lambda表達式都可以分為三個部分:

參數(shù)部分:() event (x, y) (Long x, Long y)

將參數(shù)和表達式主體分開的符號:->

表達式主體

參數(shù)的形式

Lambda表達式可以看作是匿名內部類的簡寫形式,參數(shù)也就是使用匿名內部類時實現(xiàn)的方法的參數(shù)。

有的方法不需要參數(shù),如Runnablerun方法,所以使用()代表參數(shù)部分。

有的方法只需要一個參數(shù)且類型確定,如ActionListener.actionPerformed方法,可以直接使用參數(shù),不需要指定類型,也不需要加括號。

有多個參數(shù)時,必須要加上括號,把參數(shù)擴起來

當聲明參數(shù)類型時,無論有多少個參數(shù),都需要加括號

表達式主體的形式

表達式可以只有一行代碼,也可以有多行代碼;有的表達式有返回值,有的沒有。

只有一行代碼的表達式不需要{}

如果有返回值,不用寫return,表達式會把這行代碼的返回值作為返回值

如果使用了{},則需要顯式的寫出return

有多行代碼的表達式必須使用{}

如果有返回值,需要顯式的寫return

引用值,而不是變量

匿名內部類中,如果想要引用其所在方法中的變量,需要將其聲明為final。這意味著你實際引用的是一個值,而不是變量。

Java 8 中,雖然可以引用非final的變量,但這個變量必須是既成事實上的final,如果對變量進行修改,將無法通過編譯。這意味著Lambda表達式仍然是引用的一個值,而不是變量。

實際上可以通過使用數(shù)組來繞開編譯器,但是這樣做之前應該考慮一下你的代碼邏輯是否正確。

函數(shù)接口

只有一個抽象方法的接口叫做函數(shù)接口。

JDK中最重要的函數(shù)接口:

Interface Argument Return e.g.
Predicate T boolean fliter
Consumer T void forEach
Function T R map
Supplier None T factory function
UnaryOperator T T modify String
BinaryOperator (T, T) T add two instances
類型推斷

Java 8為新成員Lambda表達式提供了類型推斷的支持,在不需要聲明參數(shù)類型的Lambda表達式中表現(xiàn)的有為明顯。形如:

BinaryOperator add = (x, y) -> x + y;

的表達式得以通過編譯并正確執(zhí)行,就是因為JVM通過泛型參數(shù)Integer推斷出了方法參數(shù)的類型。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66579.html

相關文章

  • Java 8 函數(shù)編程讀書筆記——類庫

    摘要:本書第四章的讀書筆記本章主要闡述如何使用表達式基本類型考慮到裝箱類型過于占用內存提供了針對基本類型的操作以達到優(yōu)化的效果如方法對基本類型做特殊處理的方法在命名上有明確規(guī)范如果返回類型為基本類型則在基本類型名稱前面加如果參數(shù)類型是基本類型則不 本書第四章的讀書筆記, 本章主要闡述: 如何使用Lambda表達式. 基本類型 考慮到裝箱類型過于占用內存, JDK提供了針對基本類型的操作, 以...

    MingjunYang 評論0 收藏0
  • Java 8 函數(shù)編程讀書筆記——數(shù)據(jù)并行化

    摘要:限制編寫并行流,存在一些與非并行流不一樣的約定。底層框架并行流在底層沿用的框架,遞歸式的分解問題,然后每段并行執(zhí)行,最終由合并結果,返回最后的值。 本書第六章的讀書筆記,也是我這個系列的最后一篇讀書筆記。后面7、8、9章分別講的測試、調試與重構、設計和架構的原則以及使用Lambda表達式編寫并發(fā)程序,因為筆記不好整理,就不寫了,感興趣的同學自己買書來看吧。 并行化流操作 關于并行與并發(fā)...

    leone 評論0 收藏0
  • java 8 實戰(zhàn)》讀書筆記 -第十四章 函數(shù)編程的技巧

    摘要:但是,最好使用差異化的類型定義,函數(shù)簽名如下其實二者說的是同一件事。后者的返回值和初始函數(shù)的返回值相同,即。破壞式更新和函數(shù)式更新的比較三的延遲計算的設計者們在將引入時采取了比較特殊的方式。四匹配模式語言中暫時并未提供這一特性,略。 一、無處不在的函數(shù) 一等函數(shù):能夠像普通變量一樣使用的函數(shù)稱為一等函數(shù)(first-class function)通過::操作符,你可以創(chuàng)建一個方法引用,...

    nemo 評論0 收藏0
  • Java 8 函數(shù)編程讀書筆記——流

    摘要:本文是函數(shù)式編程第三章的讀書筆記,章名為流。正確使用表達式明確要達成什么轉化,而不是說明如何轉化沒有副作用只通過函數(shù)的返回值就能充分理解函數(shù)的全部作用函數(shù)不會修改程序或外界的狀態(tài)獲取值而不是變量避免使用數(shù)組逃過的追殺,應該考慮優(yōu)化邏輯 本文是「Java 8 函數(shù)式編程」第三章的讀書筆記,章名為流。本章主要介紹了外部迭代與內部迭代以及常用的高階函數(shù)。 外部迭代與內部迭代 外部迭代 過去我...

    qpwoeiru96 評論0 收藏0
  • java 8 實戰(zhàn)》讀書筆記 -第三章 Lambda表達

    摘要:利用前面所述的方法,這個例子可以用方法引用改寫成下面的樣子構造函數(shù)引用對于一個現(xiàn)有構造函數(shù),你可以利用它的名稱和關鍵字來創(chuàng)建它的一個引用。 第三章 Lambda表達式 函數(shù)式接口 函數(shù)式接口就是只定義一個抽象方法的接口,哪怕有很多默認方法,只要接口只定義了一個抽象方法,它就仍然是一個函數(shù)式接口。 常用函數(shù)式接口 showImg(https://segmentfault.com/img...

    whinc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<