第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Java 8新特性

同學(xué)們可能有個(gè)疑問,Java 的版本已經(jīng)更新到了 15,本教程使用的版本也是最新的 Java 15,為什么還要介紹Java 8的新特性呢?為什么不去介紹 Java 15 的新特性呢?

這是因?yàn)?Java 8 是一個(gè)有重大改變的版本,該版本對 Java 做了重大改進(jìn)。Java 8 由 Oracle 公司在 2014 年 3 月發(fā)布,可以看成是自 Java 5 以后的最具革命性的版本。至今仍是企業(yè)級應(yīng)用最優(yōu)先考慮使用的版本。Java 8 以后大的版本更新速度比較快,同學(xué)們沒有必要每個(gè)版本的新特性都去研習(xí),有些“新特性”只是嘗試,不一定好用,也可能在將來的版本被廢棄掉,因此我們學(xué)習(xí)最穩(wěn)定的 Java 8 新特性即可。(如果你想了解 Java 15 的新特性,建議去官方文檔翻閱。)

本小節(jié)我們將列舉并概述 Java 8 的核心新特性,有一部分特性我們已經(jīng)在前面的小節(jié)中介紹過,還有一部分沒有介紹過的新特性,由于內(nèi)容較多切較為重要,本小節(jié)將簡要介紹,詳細(xì)內(nèi)容在之后的幾個(gè)小節(jié)中展開介紹。

1. 函數(shù)式接口

Java 8 引入的一個(gè)核心概念是函數(shù)式接口(Functional Interfaces)。通過在接口里面添加一個(gè)抽象方法,這些方法可以直接從接口中運(yùn)行。

有關(guān)函數(shù)式接口的內(nèi)容我們將在學(xué)完Lambda后詳細(xì)介紹。

2. Lambda 表達(dá)式

在 Java 8 之前,編寫一個(gè)匿名內(nèi)部類的代碼很冗長、可讀性很差,Lambda 表達(dá)式的應(yīng)用則使代碼變得更加緊湊,可讀性增強(qiáng);Lambda 表達(dá)式使并行操作大集合變得很方便,可以充分發(fā)揮多核 CPU 的優(yōu)勢,更易于為多核處理器編寫代碼。

關(guān)于 Lambda 表達(dá)式我們將在下一小節(jié)介紹。

3. Stream API

Java 8 引入了流式操作(Stream),通過該操作可以實(shí)現(xiàn)對集合(Collection)的并行處理和函數(shù)式操作。

根據(jù)流的并發(fā)性,流又可以分為串行和并行兩種。流式操作實(shí)現(xiàn)了集合的過濾、排序、映射等功能。

根據(jù)操作返回的結(jié)果不同,流式操作分為中間操作和最終操作兩種。最終操作返回一特定類型的結(jié)果,而中間操作返回流本身,這樣就可以將多個(gè)操作依次串聯(lián)起來。

關(guān)于Stream API,我們將在后面的小節(jié)中介紹。

4. 接口的增強(qiáng)

Java 8 對接口做了進(jìn)一步的增強(qiáng)。

在接口中可以添加使用 default 關(guān)鍵字修飾的非抽象方法。還可以在接口中定義靜態(tài)方法。增強(qiáng)后的接口看上去與抽象類的功能越來越類似了。

關(guān)于默認(rèn)方法靜態(tài)方法,我們在Java接口這一小節(jié),已經(jīng)結(jié)合實(shí)例詳細(xì)介紹過了,忘記了的同學(xué)可以回去溫習(xí)一下。

5. 注解的更新

對于注解,Java 8 主要有兩點(diǎn)改進(jìn):類型注解和重復(fù)注解。

Java 8 的類型注解擴(kuò)展了注解使用的范圍。在該版本之前,注解只能是在聲明的地方使用。現(xiàn)在幾乎可以為任何東西添加注解:局部變量、類與接口,就連方法的異常也能添加注解。新增的兩個(gè)注釋的程序元素類型 ElementType.TYPE_USEElementType.TYPE_PARAMETER 用來描述注解的新場合。對類型注解的支持,增強(qiáng)了通過靜態(tài)分析工具發(fā)現(xiàn)錯(cuò)誤的能力。原先只能在運(yùn)行時(shí)發(fā)現(xiàn)的問題可以提前在編譯的時(shí)候被排查出來。

在該版本之前使用注解的一個(gè)限制是相同的注解在同一位置只能聲明一次,不能聲明多次。Java 8 引入了重復(fù)注解機(jī)制,這樣相同的注解可以在同一地方聲明多次。重復(fù)注解機(jī)制本身必須用 @Repeatable 注解。

關(guān)于注解的更多知識點(diǎn),可以回到Java 注解這一小節(jié)溫習(xí)。

6. IO/NIO 的改進(jìn)

Java 8 對 IO/NIO 也做了一些改進(jìn)。主要包括:改進(jìn)了 java.nio.charset.Charset 的實(shí)現(xiàn),使編碼和解碼的效率得以提升,也精簡了 jre/lib/charsets.jar 包;優(yōu)化了 String(byte[],*) 構(gòu)造方法和 String.getBytes() 方法的性能;還增加了一些新的 IO/NIO 方法,使用這些方法可以從文件或者輸入流中獲取流(java.util.stream.Stream),通過對流的操作,可以簡化文本行處理、目錄遍歷和文件查找。

7. 新的日期時(shí)間 API

Java 的日期與時(shí)間 API 問題由來已久,Java 8 之前的版本中關(guān)于時(shí)間、日期及其他時(shí)間日期格式化類由于線程安全、重量級、序列化成本高等問題而飽受批評。Java 8 吸收了 Joda-Time 的精華,提供了更優(yōu)秀易用的 API。

關(guān)于新的日期時(shí)間 API,我們已經(jīng)在Java日期時(shí)間處理這一小節(jié)具體介紹。

8. 小結(jié)

通過本小節(jié)的學(xué)習(xí),我們了解到 Java 8 是一個(gè)革命性的版本,新增了諸多好用的新特性,也深得企業(yè)級開發(fā)的青睞。關(guān)于 Java 8 之后的版本的新特性,我們不再深究。同學(xué)們可以去官網(wǎng)來查看詳細(xì)的版本更新日志。

關(guān)于函數(shù)式接口、Lambda 表達(dá)式、Stream API等新特性我們將在接下來的小節(jié)中展開講解。