![Java8新特性分享+(視頻閹割版).x_第1頁](http://file4.renrendoc.com/view/aac641d6942454279cf6c90d8db8fd65/aac641d6942454279cf6c90d8db8fd651.gif)
![Java8新特性分享+(視頻閹割版).x_第2頁](http://file4.renrendoc.com/view/aac641d6942454279cf6c90d8db8fd65/aac641d6942454279cf6c90d8db8fd652.gif)
![Java8新特性分享+(視頻閹割版).x_第3頁](http://file4.renrendoc.com/view/aac641d6942454279cf6c90d8db8fd65/aac641d6942454279cf6c90d8db8fd653.gif)
![Java8新特性分享+(視頻閹割版).x_第4頁](http://file4.renrendoc.com/view/aac641d6942454279cf6c90d8db8fd65/aac641d6942454279cf6c90d8db8fd654.gif)
![Java8新特性分享+(視頻閹割版).x_第5頁](http://file4.renrendoc.com/view/aac641d6942454279cf6c90d8db8fd65/aac641d6942454279cf6c90d8db8fd655.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JAVA8技術(shù)分享
2021/5/91Aboutme鄧海二,OSChina.NET架構(gòu)師,關(guān)注java發(fā)展動態(tài)以及最新技術(shù),個(gè)人博客:/benhaile2021/5/92JavaSE8自java5以來最大的版本變動很大程度增強(qiáng)java類庫主要目標(biāo)更高的開發(fā)效率更高代碼可靠性更好利用多核和多處理器系統(tǒng)代碼不再串行執(zhí)行2021/5/93Lambda表達(dá)式函數(shù)式接口:只包含一個(gè)方法的接口語法:(parameters)
->
expression
或者
(parameters)
->
{
statements;
}方法引用跟lambda表達(dá)式一樣的語法:ObjectReference::methodName2021/5/94以前的做法:newThread(newRunnable(){@Overridepublicvoidrun(){System.out.println(“實(shí)現(xiàn)的線程");}}).start();Lambda實(shí)現(xiàn)方式:new
Thread(()
->System.out.println("lambda實(shí)現(xiàn)的線程")).start();
2021/5/95默認(rèn)方法提供相應(yīng)機(jī)制將新方法添加到現(xiàn)有接口未破環(huán)向后兼容性為Java提供行為及類型(而不是狀態(tài)!)的多繼承2021/5/96publicinterfaceA{defaultvoidfoo(){System.out.println("CallingA.foo()");}}
publicclassClazzimplementsA{publicstaticvoidmain(String[]args){Clazzclazz=newClazz();clazz.foo();//調(diào)用A.foo()}}2021/5/97抽象類與接口區(qū)別相同點(diǎn)不同點(diǎn)1.都是抽象類型1.抽象類不可以多重繼承,接口可以(無論是多重類型繼承還是多重行為繼承)2.都可以有實(shí)現(xiàn)方法(以前接口不行)2.抽象類和接口所反映出的設(shè)計(jì)理念不同。其實(shí)抽象類表示的是"is-a"關(guān)系,接口表示的是"like-a"關(guān)系3.都可以不需要實(shí)現(xiàn)類或者繼承者去實(shí)現(xiàn)所有方法,(以前不行,現(xiàn)在接口中默認(rèn)方法不需要實(shí)現(xiàn)者實(shí)現(xiàn))3.接口中定義的變量默認(rèn)是publicstaticfinal型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值;抽象類中的變量默認(rèn)是friendly型,其值可以在子類中重新定義,也可以重新賦值2021/5/98類型注解批注當(dāng)前只能用在類型聲明上類、方法、變量定義允許通過可插入的類型檢查器進(jìn)行錯誤檢測例如,空指針錯誤、爭用條件,線程安全等2021/5/99checkframeworkimportcheckers.nullness.quals.*;publicclassGetStarted{voidsample(){@NonNullObjectref=null;}}GetStarted.java:5:incompatibletypes.found:@Nullable<nulltype>required:@NonNullObject@NonNullObjectref=null;^1error2021/5/910泛型判斷改進(jìn)1.支持通過方法上下文推斷泛型目標(biāo)類型2.支持在方法調(diào)用鏈路當(dāng)中,泛型類型推斷傳遞到最后一個(gè)方法2021/5/911Nashorn高性能的輕型JavaScript引擎集成到JRE使用現(xiàn)有javax.scriptAPI符合ECMAScript-2625.1版語言規(guī)范新命令行工具jjs可運(yùn)行JavaScript2021/5/912ScriptEngineManagermanager=newScriptEngineManager();ScriptEngineengine=manager.getEngineByName("JavaScript");System.out.println(engine.getClass().getName());System.out.println("Result:"+engine.eval("functionf(){return1;};f()+1;"));
輸出如下:jdk.nashorn.api.scripting.NashornScriptEngineResult:22021/5/913JJS工具jjs是一個(gè)基于標(biāo)準(zhǔn)的Noshorn引擎,它接受javascript文件列表作為參數(shù)。作為例子,讓我們創(chuàng)建一個(gè)func.js,內(nèi)容如下:functionf(){
return1;
};print(f()+1);運(yùn)行這個(gè)文件,把這個(gè)文件作為參數(shù)傳給jjsjjsfunc.js輸出結(jié)果如下22021/5/914外部VS內(nèi)部迭代for(Orangeo:orangebox){if(o.getColor()==GREEN)o.setColor(ORANGE);}orangebox.forEach(o→{
if
(o.getColor()
==GREEN)o.setColor(ORANGE);})2021/5/915StreamAPI對集合執(zhí)行批量數(shù)據(jù)操作僅僅代表著數(shù)據(jù)流,并沒有數(shù)據(jù)結(jié)構(gòu)串行和并行實(shí)現(xiàn)2021/5/916Stream通用語法2021/5/917創(chuàng)建Strean靜態(tài)方法創(chuàng)建Stream<Integer>integerStream=Stream.of(1,2,3,5);來源CollectionStream<Integer>integerStream=nums.stream()2021/5/918轉(zhuǎn)換Streamdistinct:對于Stream中包含的元素進(jìn)行去重操作2021/5/919filter:對于Stream中包含的元素使用給定的過濾函數(shù)進(jìn)行過濾操作map:對于Stream中包含的元素使用給定的轉(zhuǎn)換函數(shù)進(jìn)行轉(zhuǎn)換操作2021/5/920聚合Streamcount方法可使流的結(jié)果最終統(tǒng)計(jì),返回int,比如我們計(jì)算一下滿足18歲的總?cè)藬?shù)。intcountOfAdult=persons.stream().filter(p->p.getAge()>18).map(person->newAdult(person)).count();2021/5/921順序流與并行流List<Person>people=list.getStream.collect(Collectors.toList());List<Person>people=list.getStream.parallel().collect(Collectors.toList());2021/5/922longt0=System.nanoTime();//初始化一個(gè)范圍100萬整數(shù)流,求能被2整除的數(shù)字,toArray()是終點(diǎn)方法inta[]=IntStream.range(0,1_000_000).filter(p->p%2==0).toArray();longt1=System.nanoTime();//和上面功能一樣,這里是用并行流來計(jì)算intb[]=IntStream.range(0,1_000_000).parallel().filter(p->p%2==0).toArray();longt2=System.nanoTime();//我本機(jī)的結(jié)果是serial:0.06s,parallel0.02s,證明并行流確實(shí)比順序流快System.out.printf("serial:%.2fs,parallel%.2fs%n",(t1-t0)*1e-9,(t2-t1)*1e-9);2021/5/923日期和時(shí)間API適用于JavaSE平臺的新日期、時(shí)間和日歷API標(biāo)準(zhǔn)IOS日期格式更流暢,實(shí)例不可變,線程安全兩個(gè)日期概念機(jī)器時(shí)間,
比如Instant人類自身的觀念,比如LocalDate和LocalTime2021/5/924標(biāo)準(zhǔn)IOS日期格式2021/5/925方法前綴of:靜態(tài)工廠方法。parse:靜態(tài)工廠方法,關(guān)注于解析。get:獲取某些東西的值。is:檢查某些東西的是否是true。with:不可變的setter方法。plus:加一些量到某個(gè)對象。minus:從某個(gè)對象減去一些量。to:轉(zhuǎn)換到另一個(gè)類型。at:把這個(gè)對象與另一個(gè)對象組合起來,例如:date.atTime(time)。2021/5/926獲取日期屬性2021/5/927設(shè)置日期屬性2021/5/928日期計(jì)算2021/5/929新舊日期轉(zhuǎn)換Instantinstant=newDate().toInstant();Datedate=Date.from(instant);2021/5/930Base64JDK實(shí)現(xiàn)sun.misc.BASE64Encoder和sun.misc.BASE64Decoderjavax.xml.bind.DatatypeConverterJava8在java.util第三方實(shí)現(xiàn)ApacheCommonsCodeclibraryGoogleGuavanet.iharder.Base64號稱Base64編碼速度最快的MigBase642021/5/931Java.util.BASE64//
編碼String
asB64
=
Base64.getEncoder().encodeToString("some
string".getBytes("utf-8"));
輸出為:
c29tZSBzdHJpbmc=//
解碼byte[]
asBytes
=
Base64.getDecoder().decode("c29tZSBzdHJpbmc=");輸出為:
some
string2021/5/932性能對比2021/5/933Array.parallelSortArrays.sort使用歸并排序Array.parallelSort使用Fork/Join框架把數(shù)組分成4部分。第一個(gè)兩部分進(jìn)行排序,然后將它們合并排序。接下來的兩部分進(jìn)行排序,然后將它們合并排序。上面的步驟遞歸地重復(fù),直到部分類的大小不小于上述閾值計(jì)算。2021/5/9342021/5/935消除永久代(PermGenspace)不再需要調(diào)整其大小當(dāng)前對象移到Java堆或本地內(nèi)存JVM參數(shù)
-XX:PermSize
和-XX:MaxPermSize被XX:MetaSpaceSize
和
-XX:MaxMetaspaceSize替換。2021/5/936精簡的JRE緊湊的JRE分3種,分別是compact1、compa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會議場館終端機(jī)租賃合同
- 2025年度半掛車買賣與融資租賃業(yè)務(wù)合作協(xié)議
- 終止合伙協(xié)議書范本
- 2025年商洛貨運(yùn)從業(yè)資格考題
- 商業(yè)空間裝修預(yù)算合同范本
- 老年公寓裝修延期協(xié)議
- 2025年撫州貨運(yùn)從業(yè)資格證模擬考試下載安裝
- 2025年度爆破作業(yè)安全培訓(xùn)與考核合同協(xié)議
- 事業(yè)單位人員聘用合同協(xié)議書
- 高鐵及軌道車輛零部件采購合同
- 高速公路養(yǎng)護(hù)培訓(xùn)
- 如何在小學(xué)語文教學(xué)中落實(shí)單元語文要素
- 2024年演出經(jīng)紀(jì)人考試必背1000題附答案(黃金題型)
- 安全員繼續(xù)教育考試題庫1000道附參考答案(完整版)
- (2024年)保安培訓(xùn)圖文課件
- 專題16.7 二次根式章末八大題型總結(jié)(拔尖篇)-八年級數(shù)學(xué)下冊(人教版)(解析版)
- 如何提高調(diào)查研究能力
- 電網(wǎng)兩票培訓(xùn)課件
- 改革開放教育援藏的創(chuàng)新及其成效
- 第3課+中古時(shí)期的西歐(教學(xué)設(shè)計(jì))-【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 班組建設(shè)工作匯報(bào)
評論
0/150
提交評論