淺談JDK7和JDK8的區(qū)別在哪
一、接口中的default方法
一般來說接口中的方法都是不實現(xiàn)的,基本通過實現(xiàn)類來實現(xiàn)方法。但是jdk8中提供了一種被default修飾的方法,可以直接在接口中進(jìn)行實現(xiàn)。
二、lambda表達(dá)式
jdk8引入了lambda表達(dá)式,也可稱為closure(閉包),通常是在需要一個函數(shù),但又不想費(fèi)神去命名一個函數(shù)的場合下使用,也就是指匿名函數(shù)。
lambda允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。
由于其幾乎被所有主流開發(fā)語言支持。是java8新引入的一種語法,是一種緊湊的傳遞代碼的方式。使用lambda表達(dá)式可以使代碼變的更加簡潔緊湊。
三、函數(shù)式接口
函數(shù)式接口的引入是為了函數(shù)式編程的,函數(shù)式編程往往依賴于lambda表達(dá)式。
定義函數(shù)式接口有兩個步驟:
1)確保接口中有且僅有一個抽象方法:
2)使用注解@FunctionalInterface修飾接口
四、StreamAPI
JDK8中引入了StreamAPI,對于學(xué)過Flink或Spark的學(xué)者應(yīng)該對此比較熟悉,其實就是類似于一種流式的數(shù)據(jù)處理,從dataSource到中間的operator操作,再到最后的dataSink。
Stream的中間操作有map,filter等操作。而流式的數(shù)據(jù)處理往往就是通過函數(shù)式編程實現(xiàn)的。

五、移出永久代,元空間替換
JDK7使用永久代存儲類的元數(shù)據(jù),JDK8使用元空間存儲類的元數(shù)據(jù)。元空間和永久代都是用來存儲class相關(guān)信息,包括class對象的Method,F(xiàn)ield等,元空間和永久代其實都是方法區(qū)的實現(xiàn),只是實現(xiàn)有所不同,所以說方法區(qū)其實只是一種JVM的規(guī)范。
區(qū)別:
兩者最大的區(qū)別是元空間使用本地內(nèi)存,而永久代使用的是JVM的內(nèi)存。
元空間優(yōu)勢:
優(yōu)勢就是元數(shù)據(jù)分配只受本地內(nèi)存大小的限制。本地內(nèi)存剩余多少理論上metaspace就可以有多大,這解決了空間不足的問題,不過也不可能任其無限壯大,JVM默認(rèn)在運(yùn)行時會根據(jù)需要動態(tài)的設(shè)置其大小
六、HashMap中的優(yōu)化
1)增加紅黑樹
2)解決jdk1.7多線程下的死循環(huán):
擴(kuò)容使用尾插法,拋棄頭插法
3)rehash的優(yōu)化:
jdk7擴(kuò)容的rehash是重新計算桶的位置,而jdk8則進(jìn)行了優(yōu)化,不需要進(jìn)行重新計算。
七、currentHashMap的優(yōu)化
jdk7是使用分段鎖實現(xiàn)線程安全,jdk則使用sy關(guān)鍵字和大量的CAS操作實現(xiàn)。
到此這篇關(guān)于淺談JDK7和JDK8的區(qū)別在哪的文章就介紹到這了,更多相關(guān)JDK7和JDK8的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡單講解Java設(shè)計模式編程中的單一職責(zé)原則
這篇文章主要介紹了Java設(shè)計模式編程中的單一職責(zé)原則,這在團(tuán)隊開發(fā)編寫接口時經(jīng)常使用這樣的約定,需要的朋友可以參考下2016-02-02
Java實現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法示例
這篇文章主要介紹了Java實現(xiàn)解析dcm醫(yī)學(xué)影像文件并提取文件信息的方法,結(jié)合實例形式分析了java基于第三方庫文件針對dcm醫(yī)學(xué)影像文件的解析操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-04-04
Springboot+Flowable?快速實現(xiàn)工作流的開發(fā)流程
這篇文章主要介紹了Springboot+Flowable?快速實現(xiàn)工作流的開發(fā)流程,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
Java中Double除保留后小數(shù)位的幾種方法(小結(jié))
這篇文章主要介紹了Java中Double保留后小數(shù)位的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
idea中maven本地倉庫jar包打包失敗和無法引用的問題解決
本文主要介紹了idea中maven本地倉庫jar包打包失敗和無法引用的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

