亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Java 8新特性

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

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

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

1. 函數式接口

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

有關函數式接口的內容我們將在學完Lambda后詳細介紹。

2. Lambda 表達式

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

關于 Lambda 表達式我們將在下一小節介紹。

3. Stream API

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

根據流的并發性,流又可以分為串行和并行兩種。流式操作實現了集合的過濾、排序、映射等功能。

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

關于Stream API,我們將在后面的小節中介紹。

4. 接口的增強

Java 8 對接口做了進一步的增強。

在接口中可以添加使用 default 關鍵字修飾的非抽象方法。還可以在接口中定義靜態方法。增強后的接口看上去與抽象類的功能越來越類似了。

關于默認方法靜態方法,我們在Java接口這一小節,已經結合實例詳細介紹過了,忘記了的同學可以回去溫習一下。

5. 注解的更新

對于注解,Java 8 主要有兩點改進:類型注解和重復注解。

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

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

關于注解的更多知識點,可以回到Java 注解這一小節溫習。

6. IO/NIO 的改進

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

7. 新的日期時間 API

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

關于新的日期時間 API,我們已經在Java日期時間處理這一小節具體介紹。

8. 小結

通過本小節的學習,我們了解到 Java 8 是一個革命性的版本,新增了諸多好用的新特性,也深得企業級開發的青睞。關于 Java 8 之后的版本的新特性,我們不再深究。同學們可以去官網來查看詳細的版本更新日志。

關于函數式接口、Lambda 表達式Stream API等新特性我們將在接下來的小節中展開講解。