Java 8 | 新特性簡單介紹
最近在工作上在處理日期時區上的問題,以前拜讀過相關的文章,隱約記得時區問題很難處理,沒想到自己有這麼一天處理時區問題,我想說的是⋯⋯XXX真的有夠難處理;要注意和考慮的東西太多了,還有很多技術債,在讀完寫完這個Java 8
的新特性後,我一定會接著把時區問題拉出來好好寫一番。
這邊會突然介紹Java 8
的新特性,主要是因為自己的不熟悉,以往工作上都是使用Java 7
以下的版本居多,雖然Java 8
有拜讀過,但是實際下去使用和深入研究是沒有的。身為一個技術人,持續進步、努力學習、虛心受教,不會不懂不知道並不可恥,可恥的是不願意承認,保持良好的學習心態才是最重要的。
在開始之前先將Java 8
的新特性稍微簡介一下,後面再一個一個深入了解並且演練。
Java 8
Java 8
(又稱為jdk 1.8
) 是Java
語言開發的一個主要版本。
Oracle 公司於2014
年3
月18
日發布Java 8
,它支持函數式編程,新的JavaScript
引擎,新的日期API
,新的Stream API
等。
Java 8 新特性
Java 8
新增了非常多的特性,我們主要討論以下幾個:
Lambda
表達式:Lambda
允許把函數作為一個方法的參數(函數作為參數傳遞到方法中)。
方法引用:方法引用提供了非常有用的語法,可以直接引用已有Java
類或對象(實例)的方法或構造器。與lambda
聯合使用,方法引用可以使語言的構造更緊湊簡潔,減少冗餘程式碼。
默認方法:默認方法就是一個在接口裡面有了一個實現的方法。
新工具:新的編譯工具,如:Nashorn
引擎jjs
、類依賴分析器jdeps
。
Stream API
:新添加的Stream API
(java.util.stream
) 把真正的函數式編程風格引入到Java
中。
Date Time API
:加強對日期與時間的處理。
Optional
類:Optional
類已經成為Java 8
類庫的一部分,用來解決空指針異常。
Nashorn
, JavaScript
引擎:Java 8
提供了一個新的Nashorn javascript
引擎,它允許我們在JVM
上運行特定的javascript
應用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| import java.util.Collections; import java.util.List; import java.util.ArrayList; import java.util.Comparator; public class Java8Tester { public static void main(String args[]){ List<String> names1 = new ArrayList<String>(); names1.add("Google "); names1.add("Morose "); names1.add("Dog "); names1.add("GitLab "); List<String> names2 = new ArrayList<String>(); names2.add("Google "); names2.add("Morose "); names2.add("Dog "); names2.add("GitLab "); Java8Tester tester = new Java8Tester(); System.out.println("使用 Java 7 語法: "); tester.sortUsingJava7(names1); System.out.println(names1); System.out.println("使用 Java 8 語法: "); tester.sortUsingJava8(names2); System.out.println(names2); } private void sortUsingJava7(List<String> names){ Collections.sort(names, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareTo(s2); } }); } private void sortUsingJava8(List<String> names){ Collections.sort(names, (s1, s2) -> s1.compareTo(s2)); } }
|
輸出的結果為:
1 2 3 4
| 使用 Java 7 語法: [Dog , GitLab , Google , Morose ] 使用 Java 8 語法: [Dog , GitLab , Google , Morose ]
|
註:以上參考了
Java 8 新特性
Java 8的新特性—终极版
现代化 Java - Java8 指南