jdk7新特性(部分)
- switch支持字符串
- List
tempList = new ArrayList<>(),泛型實例化自動推斷 - AutoCloseable接口實現自動關閉,在try()中
- 新增獲取環境信息的工具方法,getJavaHomeDir,getUserHomeDir,getUserDir等
- 對java集合的增強支持,如:
List<String> list=["item"]; //向List集合中添加元素
String item=list[0]; //從List集合中獲取元素
Set<String> set={"item"}; //向Set集合對象中添加元素
Map<String,Integer> map={"key":1}; //向Map集合中添加對象
int value=map["key"]; //從Map集合中獲取對象
- 數值可以加下划線,int one_million = 1_000_000;
- 在try catch異常撲捉中,一個catch可以寫多個異常類型,用"|"隔開;
jdk8新特性(部分)
- 接口可以添加默認方法,default;
- lambda表達式,對於接口可以直接用()->{}方式來表達,小括號表示方法入參,花括號內表示方法返回值,如Collections的sort()方法:
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
Collections.sort(names, (String a, String b) -> b.compareTo(a));
Collections.sort(names, (a, b) -> b.compareTo(a));
- 函數式接口,@FunctionalInterface, 將lambda表達式映射到一個單方法的接口上
- 方法和構造函數的引用,可以使用::,如Integer::valueOf
- lambda表達式訪問外層作用域和老版本的匿名對象中的方式很像,可以直接訪問標記了final的外層局部變量,或者實例的字段以及靜態變量。
- java.util.Stream 表示能應用在一組元素上一次執行的操作序列。Stream 操作分為中間操作或者最終操作兩種,最終操作返回一特定類型的計算結果,而中間操作返回Stream本身,這樣你就可以將多個操作依次串起來。
Stream 的創建需要指定一個數據源,比如 java.util.Collection的子類,List或者Set, Map不支持。Stream的操作可以串行執行或者並行執行。
//Filter 過濾
stringCollection
.stream()
.filter((s) -> s.startsWith("a"))
.forEach(System.out::println);
//Sort 排序
stringCollection
.stream()
.sorted()
.filter((s) -> s.startsWith("a"))
.forEach(System.out::println);
//排序只創建了一個排列好后的Stream,而不會影響原有的數據源,排序之后原數據stringCollection是不會被修改的;
//Map 映射
//中間操作map會將元素根據指定的Function接口來依次將元素轉成另外的對象,下面的示例展示了將字符串轉換為大寫字符串
stringCollection
.stream()
.map(String::toUpperCase)
.sorted((a, b) -> b.compareTo(a))
.forEach(System.out::println);
//Match 匹配
//Stream提供了多種匹配操作,允許檢測指定的Predicate是否匹配整個Stream。所有的匹配操作都是最終操作,並返回一個boolean類型的值
boolean anyStartsWithA =
stringCollection
.stream()
.anyMatch((s) -> s.startsWith("a"));
boolean allStartsWithA =
stringCollection
.stream()
.allMatch((s) -> s.startsWith("a"));
boolean noneStartsWithZ =
stringCollection
.stream()
.noneMatch((s) -> s.startsWith("z"));
//Count 計數
//計數是一個最終操作,返回Stream中元素的個數,返回值類型是long
long startsWithB =
stringCollection
.stream()
.filter((s) -> s.startsWith("b"))
.count();
//Reduce 規約
//這是一個最終操作,允許通過指定的函數來講stream中的多個元素規約為一個元素,規越后的結果是通過Optional接口表示的
Optional<String> reduced =
stringCollection
.stream()
.sorted()
.reduce((s1, s2) -> s1 + "#" + s2);
reduced.ifPresent(System.out::println);
- java.time下包含了全新的時間日期API
- 支持多重注解