1. 程式人生 > 其它 >專注JAVA十餘年:Java 5-11新特性超詳細總結

專注JAVA十餘年:Java 5-11新特性超詳細總結

技術標籤:JAVAjava後端

專注JAVA十餘年:Java 5-11新特性超詳細總結

java5

1.泛型 (Generics)

 List<Integer> list=new ArrayList<Integer>();

2.增強迴圈(Enhanced for Loop)

Java 5,6,7,8,9,10,11新特性超詳細總結

3.自動封箱拆箱(Autoboxing/Unboxing )。

八大基本型別和它們的包裝類能夠自動的相互轉換。

4.列舉(Typesafe Enums)。

ps:列舉是一種實現執行緒安全的單例模式的好方式。

Java 5,6,7,8,9,10,11新特性超詳細總結

5.可變引數 (Varargs)

語法:(type… arguments)

可變引數本質仍然是用一個數組儲存引數,只是java隱藏了這一過程。需要注意的是如果一個方法宣告中含有可變引數,那必須放在最後一個位置。

Java 5,6,7,8,9,10,11新特性超詳細總結

6.靜態匯入(Static Import)。通過import類來使用類裡的靜態變數或方法(直接通過名字,不需要加上類名.),簡化了程式碼的書寫。

Java 5,6,7,8,9,10,11新特性超詳細總結

ps:過去的版本中只能通過繼承類或實現接口才能使用。

7.註解(Annotations)。關鍵字@interface。

Java 5,6,7,8,9,10,11新特性超詳細總結

8.新的執行緒模型和併發庫(java.util.concurrent)。

java6

1.集合框架增強。

為了更好的支援雙向訪問集合。添加了許多新的類和介面。

新的陣列拷貝方法。Arrays.copyOf和Arrays.copyOfRange

//以下為新增的新介面和類
Deque,BlockingDeque,NavigableSet,NavigableMap,
ConcurrentNavigableMap,ArrayDeque, ConcurrentSkipListSet ,
ConcurrentSkipListMap,ConcurrentSkipListMap ,
AbstractMap.SimpleEntry ,AbstractMap.SimpleImmutableEntry

2.Scripting. 可以讓其他語言在java平臺上執行。
java6包含了一個基於Mozilla Rhino實現的javascript指令碼引擎。

3.支援JDBC4.0規範。

java7

1.二進位制字首0b或者0B。整型(byte, short, int, long)可以直接用二進位制表示。

Java 5,6,7,8,9,10,11新特性超詳細總結

2.字面常量數字的下劃線。用下劃線連線整數提升其可讀性,自身無含義,不可用在數字的起始和末尾。

//數字間的下劃線不影響實際值
int k = 1_1;//值為11

  1. switch 支援String型別。
  2. 泛型例項化型別自動推斷。

Java 5,6,7,8,9,10,11新特性超詳細總結

  1. try-with-resources語句。

Java 5,6,7,8,9,10,11新特性超詳細總結

  1. 單個catch中捕獲多個異常型別(用| 分割)並通過改進的型別檢查重新丟擲異常。

java8

  1. lambada表示式(Lambda Expressions)。Lambda允許把函式作為一個方法的引數(函式作為引數傳遞進方法中)。
  2. 方法引用(Method references)。方法引用提供了非常有用的語法,可以直接引用已有Java類或物件(例項)的方法或構造器。與lambda聯合使用,可以使語言的構造更緊湊簡潔,減少冗餘程式碼。
  3. 預設方法(Default methods)。預設方法允許將新功能新增到庫的介面中,並確保相容實現老版本介面的舊有程式碼。
  4. 重複註解(Repeating Annotations)。重複註解提供了在同一宣告或型別中多次應用相同註解型別的能力。
  5. 型別註解(TypeAnnotation)。在任何地方都能使用註解,而不是在宣告的地方。 型別推斷增強。
  6. 方法引數反射(Method Parameter Reflection)。
  7. Stream API 。新新增的Stream API(java.util.stream) 把真正的函數語言程式設計風格引入到Java中。Stream API整合到了Collections API裡。
  8. HashMap改進,在鍵值雜湊衝突時能有更好表現。
  9. Date Time API。加強對日期和時間的處理。
  10. java.util 包下的改進,提供了幾個實用的工具類。 並行陣列排序。
  11. 標準的Base64編解碼。 支援無符號運算。
  • 並行陣列排序。
  • 標準的Base64編解碼。
  • 支援無符號運算。

12.java.util.concurrent 包下增加了新的類和方法。

  • java.util.concurrent.ConcurrentHashMap 類添加了新的方法以支援新的StreamApi和lambada表示式。
  • java.util.concurrent.atomic 包下新增了類以支援可伸縮可更新的變數。
  • java.util.concurrent.ForkJoinPool類新增了方法以支援 common pool。
  • 新增了java.util.concurrent.locks.StampedLock類,為控制讀/寫訪問提供了一個基於效能的鎖,且有三種模式可供選擇。

13.HotSpot

刪除了 永久代(PermGen).
方法呼叫的位元組碼指令支援預設方法。

java9

  1. java模組系統 (Java Platform Module System)。
  2. 新的版本號格式。 M A J O R . MAJOR. MAJOR.MINOR. S E C U R I T Y . SECURITY. SECURITY.PATCH
  3. java shell,互動式命令列控制檯。
  4. 在private instance methods方法上可以使用@SafeVarargs註解。
  5. diamond語法與匿名內部類結合使用。
  6. 下劃線_不能單獨作為變數名使用。
  7. 支援私有介面方法(您可以使用diamond語法與匿名內部類結合使用)。
  8. Javadoc
  • 簡化Doclet API。
  • 支援生成HTML5格式。
  • 加入了搜尋框,使用這個搜尋框可以查詢程式元素、標記的單詞和文件中的短語。
    支援新的模組系統。
  1. .JVM
  • w 3423增強了Garbage-First(G1)並用它替代Parallel GC成為預設的垃圾收集器。
  • 統一了JVM 日誌,為所有元件引入了同一個日誌系統。
  • 刪除了JDK 8中棄用的GC組合。(DefNew + CMS,ParNew + SerialOld,Incremental CMS)。
  1. properties檔案支援UTF-8編碼,之前只支援ISO-8859-1。

  2. 支援Unicode 8.0,在JDK8中是Unicode 6.2。

java10

1.區域性變數型別推斷(Local-Variable Type Inference)

Java 5,6,7,8,9,10,11新特性超詳細總結

var是一個保留型別名稱,而不是關鍵字。所以之前使用var作為變數、方法名、包名的都沒問題,但是如果作為類或介面名,那麼這個類和介面就必須重新命名了。

var的使用場景主要有以下四種:

  • 本地變數初始化。
  • 增強for迴圈中。
  • 傳統for迴圈中宣告的索引變數。
  • Try-with-resources 變數。​

2.Optional類添加了新的方法orElseThrow。相比於已經存在的get方法,這個方法更推薦使用。

java11

  1. 支援Unicode 10.0,在jdk10中是8.0。
  2. 標準化HTTP Client
  3. 編譯器執行緒的延遲分配。添加了新的命令-XX:+UseDynamicNumberOfCompilerThreads動態控制編譯器執行緒的數量。
  4. 新的垃圾收集器—ZGC。一種可伸縮的低延遲垃圾收集器(實驗性)。
  5. Epsilon。一款新的實驗性無操作垃圾收集器。Epsilon GC 只負責記憶體分配,不實現任何記憶體回收機制。這對於效能測試非常有用,可用於與其他GC對比成本和收益。
  6. Lambda引數的區域性變數語法。java10中引入的var欄位得到了增強,現在可以用在lambda表示式的宣告中。如果lambda表示式的其中一個形式引數使用了var,那所有的引數都必須使用var。

想跳出舒適圈,向JAVA高階開發進階,或者需要學習Java架構知識的,可以找跟博主合作的教學機構扣扣:1405間隔256不要漢字385

需要和大牛交流,學習大廠網際網路開發知識,加入Java高階進階裙:前面:306 中間:893 最後:487。裡面聚集了一些正在做JAVA開發且有三年以上經驗的開發夥伴。
學習開發的這段時間,整理了一些開發學習思維導圖,大廠面試題,開發筆記。學習路線圖和學習筆記,原始碼筆記,面試真題等pdf文件需要的話私信博主。