一:引言
最近面試,有被問道jdk1.6和1.8的區別,不知道怎么回答,這里簡單總結下,期待下次回答的好一點。
二、差異
1.ArrayList使用默認的構造方法構造實例,jdk1.6默認初始化大小為10,jdk1.8為0,第一次放入值才初始化,即懶加載(細節可查看源碼)。
2.hashMap底層,jdk1.6為數組加+鏈表,jdk1.8為數組加+鏈表,但當鏈表超過8時會自動轉轉換成紅黑樹。
3.靜態代碼塊加載方式不同,jdk1.6先初始化static在執行main方法,jdk1.8為懶加載,先執行main方法,使用到了static在進行初始化。
4.jdk1.8版本switch支持String變量,jdk1.6及之前版本只支持int同類型變量,即byte,short,int,char四個類型。
三、新特性
1.接口引入default關鍵字,使用default關鍵字修飾方法可以定義具體的實現,接口可以有靜態方法。
2.引入lambda表達式,可進行函數式編程。
3.函數式接口,通過@FunctionalInterface注解,可以使用函數作為參數。
4.DateAPI進行了更新。1.8之前JDK自帶的日期處理類非常不方便,1.8改觀很多,比如日期時間的創建、比較、調整、格式化、時間間隔等。這些類都在java.time包下。