我們爲什麼要關心java8,它的新特性你又知道幾個呢?

java8是在2014年3月發佈的,然而我並沒有在工作中使用其新特性,時至今日,java已經出至java10,若想跟上java技術發展的步伐,那麼則必先掌握java8這一次重大的更新,才能在此基礎上繼續j研究java10以及後續版本。java8所做的改變,在許多方面比java歷史上任何一次改變都要深遠。

這些改變會讓你的編程顯得更容易,用不著再寫下面這樣羅嗦的程序了:

我們使用Collections.sort來說明,在開始示例之前,我們有必要先要了解Collections.sort是什麼以及它的基本用法。

Collections是一個工具類,sort是其中的靜態方法,是用來對List類型進行排序的,它有兩種參數形式:

我們為什麼要關心java8,它的新特性你又知道幾個呢?

首先使用基本類型(此處使用Integer)來演示第一個方法:

我們為什麼要關心java8,它的新特性你又知道幾個呢?

我們為什麼要關心java8,它的新特性你又知道幾個呢?

可以看到,默認的排序是正序,那麼如何實現逆序呢,這就要使用第二種方式了,即通過實現Comparator接口的compare方法來完成自定義排序,代碼如下:

我們為什麼要關心java8,它的新特性你又知道幾個呢?

輸出結果:

我們為什麼要關心java8,它的新特性你又知道幾個呢?

好了,如果我們要給一個包含蘋果對象的集合排序,那麼代碼會是這樣:

我們為什麼要關心java8,它的新特性你又知道幾個呢?

重點關注比較蘋果重量Collections.sort那段代碼,你會覺得它非常羅嗦,不簡潔,方法的第二個參數為匿名內部類。

那麼在java8中,你可以編寫更為簡潔的代碼,這些代碼都起來更接近於問題的描述。

我們為什麼要關心java8,它的新特性你又知道幾個呢?

它讀起來就是給庫存排序,比較蘋果的重量。你現在不必關注這段代碼,在後面會講解它是怎麼實現的。

java8對硬件也有影響,我們平常使用的cpu都是多核的,但是絕大多是現有的java程序 只是使用了其中一個內核,其他的都閒著。

在java8之前,我們使用線程才能利用多個內核,但是線程使用起來很難,也容易出錯,Java 8提供了一個新的API(稱為“流”,Stream),它支持許多處理數據的並行操作,避免使用synchronized代碼。

把代碼傳遞給方法的簡潔方式(方法引用、Lambda):

傳遞給方法的代碼不僅僅是作為一個結果,它提供了一種新的方式,這種方式簡潔地表達了行為參數化,比方說,你想要寫兩個只有幾行代碼不同的方法,那現在你只需要把不同的那部分代碼作為參數傳遞進去就可以了。採用這種編程技巧,代碼會更短、更清晰,也比常用的複製粘貼更不容易出錯。高手看到這裡就會想,在Java 8之前可以用匿名類實現行為參數化呀——但是想想本章開頭那個Java 8代碼更加簡潔的例子,代碼本身就說明了它有多清晰。

Java 8裡面將代碼傳遞給方法的功能(同時也能夠返回代碼並將其包含在數據結構中)還讓我們能夠使用一整套新技巧,通常稱為函數式編程。一言以蔽之,這種被函數式編程界稱為函數的代碼,可以被來回傳遞並加以組合,以產生強大的編程語彙。


分享到:


相關文章: