最近看了《寫給大忙人看的java se 8》這本書,簡單的記錄一下讀后感和總結(jié)。
由于本人不做Java GUI 方面的工作,于是第4章種JavaFX直接跳過。
1.lambda 表達(dá)式。
這是java 種給出的最新特性,在最近的開發(fā)者也是相當(dāng)火的一項技能。
語法特性
語法格式:參數(shù)->表達(dá)式
<pre>
來看幾個例子
1.無參數(shù)
()->{System.out.println("Hello Lambda");};
()->function();
2.攜帶參數(shù)
String result = (String first,String second)->{first+second};
//永遠(yuǎn)不需要為lambda表達(dá)式執(zhí)行返回類型,它會根據(jù)上下文進(jìn)行推導(dǎo)出來。
</pre>
方法引用
<pre>
1.對象::實例方法
2.類:: 靜態(tài)方法
(x,y)->Math.pow(x,y) == Math::pow;
3.類::實例方法
String::compareToIgnoreCase
</pre>
Stream API
針對stream 的看法,是一種鏈?zhǔn)浇Y(jié)構(gòu)操作,針對集合或者一些數(shù)據(jù)進(jìn)行一系列操作,改變,轉(zhuǎn)換,過濾,聚合等操作。
<pre>
Stream<Data> data = ...;
Stream<Result> result = data.
filter().
map().
flatMap()
limit()
peek();
......
并行操作一般都是以前綴parallel()進(jìn)行命名
</pre>
新的時間API
java.time種的時間進(jìn)行加強(qiáng)。
LocalDateTime 沒有時區(qū)信息。
Instant 代替了原來的Date
原子值
java8 加強(qiáng)了并發(fā)處理,java.util.concurrent.atomic 包提供了用于支持無鎖可變變量的類。
其他改進(jìn)
1.字符串分割連接
a+","+b+","+c = String.join(",",a,b,c);
2.Math.floorMod(x,n) = x %n;
3.集合
Interable--forEach
Collection -- removeIf
List -- replaceAll,sort
Map -- forEach,replace,replaceAll,remove
java 7 中一些特性
1.try -with-resources 來自動關(guān)閉流操作資源。
2.object.equals(a,b).