Java技術分享之Java8新特性簡述

和概念,能以更爲簡潔、更易於維護的方式解決新的或現有的編程問題。在Java 8中有兩個著名的改進:一個是Lambda表達式,一個是Stream。

隨着編程語言生態系統的氣候不斷變化以及技術的革新,經歷20餘年的發展,Java逐漸演變成長爲Java8。相比之前只是單純的面向對象編程語言,Java8增加了很多新特性。接下來我就給大家簡單介紹一下。
在這裏插入圖片描述
Java 8對於程序員的主要好處在於它提供了更多的編程工具

Lambda表達式是什麼?

Lambda表達式,也可稱爲閉包,它允許把函數作爲一個方法的參數(函數作爲參數傳遞進方法中)。使用Lambda表達式可以使代碼變的更加簡潔緊湊,Lambda表達式的語法格式:

(parameters) -> expression或(parameters) ->{ statements; }

Lambda表達式的重要特徵:

可選類型聲明:不需要聲明參數類型,編譯器可以統一識別參數值。

可選的參數圓括號:一個參數無需定義圓括號,但多個參數需要定義圓括號。

可選的大括號:如果主體包含了一個語句,就不需要使用大括號。

可選的返回關鍵字:如果主體只有一個表達式返回值則編譯器會自動返回值,大括號需要指定明表達式返回了一個數值。

使用Lambda表達式需要注意以下兩點:

Lambda表達式主要用來定義行內執行的方法類型接口,例如,一個簡單方法接口。在上面例子中,我們使用各種類型的Lambda表達式來定義MathOperation接口的方法。然後我們定義了sayMessage的執行。

Lambda表達式免去了使用匿名方法的麻煩,並且給予Java簡單但是強大的函數化的編程能力。

Stream是什麼?

Stream就是一個流,它的主要作用就是對集合數據進行查找過濾等操作。Java 8中的 Stream是對集合(Collection)對象功能的增強,它專注於對集合對象進行各種非常便利、高效的聚合操作(aggregate operation),或者大批量數據操作(bulk data operation)。

對於基本數值型,目前有三種對應的包裝類型Stream:IntStream、LongStream、DoubleStream。當然我們也可以用Stream、Stream >、Stream,但是boxing和 unboxing會很耗時,所以特別爲這三種基本數值型提供了對應的Stream。

Java 8中還沒有提供其它數值型Stream,因爲這將導致擴增的內容較多。而常規的數值型聚合運算可以通過上面三種Stream進行。

Stream上的操作分爲兩類:中間操作和結束操作。中間操作只是一種標記,只有結束操作纔會觸發實際計算。

中間操作又可以分爲無狀態的(Stateless)和有狀態的(Stateful),無狀態中間操作是指元素的處理不受前面元素的影響,而有狀態的中間操作必須等到所有元素處理之後才知道最終結果,比如排序是有狀態操作,在讀取所有元素之前並不能確定排序結果。

結束操作又可以分爲短路操作和非短路操作,短路操作是指不用處理全部元素就可以返回結果,比如找到第一個滿足條件的元素。之所以要進行如此精細的劃分,是因爲底層對每一種情況的處理方式不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章