您好,登錄后才能下訂單哦!
本篇內容主要講解“JDK15新特性介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JDK15新特性介紹”吧!
定義isEmpty用于測試字符序列是否為空的默認方法,CharSequence::isEmpty可以用 作方法參考。實現的類java.lang.CharSequence和定義isEmpty方法的另一個接口應注意 這一點,因為可能需要對其進行修改以覆蓋isEmpty方法。
此版本將Unicode支持升級到13.0,其中包括:java.lang.Character13.0水平, 這增加了13.0 5930個字符,總共143859個字符類支持Unicode字符數據庫。這些增加的內容包括4個新腳本,總共154個腳本, 以及55個新表情符號字符。
TreeMap重新實現壓倒性一切的如:putIfAbsent、computeIfAbsent、computeIfPresent、compute、merage
舉例說明putIfAbsent等價于如下:
default V putIfAbsent(K key, V value)
V v = map.get(key); if (v == null){ v = map.put(key, value); } return v;
優勢:簡化了編寫Java程序的任務,同時避免了常見情況下的轉義序列;增強Java程序中表示用非Java語言編寫的代碼的字符串的可讀性。
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'INDIANAPOLIS' ORDER BY `EMP_ID`, `LAST_NAME`; """;
基于JVM構建的許多語言實現都依靠動態類生成來提高靈活性和效率。
詳情可見--> JEP371
淘汰-XXUseAdaptiveGDBoundary
使用java.io.ObjectInputStream.setObjectInputFilter方法設置序列化過濾器時,必 須在從流中讀取任何對象之前調用它。如果調用readObject或方法readUnshared,則該 setObjectInputFilter方法將引發IllegalStateException。
在某些情況下,String.substring返回“”,但在子字符串長度為零時,在所有情況下都可以進行改進。
之前邏輯是返回“”,需要增加一個新的地址,而目前為null,如下
public static String stripLeading(byte[] value) { int left = indexOfNonWhitespace(value); if (left == value.length) { return ""; } return (left != 0) ? newString(value, left, value.length - left) : null; }
DecimalFormat / DecimalFormatSymbols類現在可以處理貨幣值的分組分隔符。例如, 在奧地利(de-AT語言環境)中使用的德語語言的貨幣分組分隔符為“。”,而在其他德語語言環境 中的貨幣分組分隔符為“。”。
java.time.format.DateTimeFormatter.localizedBy(Locale)方法現在采用默認 的語言環境值,例如Chronology和/或DecimalStyle指定的語言環境參數。
例如,在先前的JDK版本中:
jshell> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL) .localizedBy(Locale.forLanguageTag("fa")) .format(LocalDate.now()) $3 ==> "???? 1 ??? 2020"
數字是阿拉伯文(西文)數字,在JDK 15中:
jshell> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL) .localizedBy(Locale.forLanguageTag("fa")) .format(LocalDate.now()) $3 ==> "???? ? ??? ????"
這些數字使用擴展阿拉伯語-印度數字,因為它是波斯語區域設置的默認編號系統。
ValueRange.of(long min,long maxSmallest,long maxLargest),如果 最小值大于最小最大值,則將引發異常。但是,僅當最小值大于最大最大值時才會發生例外。
1、InflaterOutputStream(OutputStream out, Inflater infl, int bufLen)允 許指定要使用的解壓縮器和緩沖區大小。 2、InflaterOutputStream.write(byte[] b, int off, int len) 正在使用最大512字節的緩沖區大小寫入數據。 3、從JDK 15開始,通過InflaterOutputStream(OutputStream out, Inflater infl,int bufLen)所指定的緩沖區大小將在對的調用中使用InflaterOutputStream.write( byte[] b,int off, int len)。如果在調用InflaterOutputStream 構造函數時未指定緩沖 區大小,則默認為512字節。
復制集合的首選方法是使用“復制構造函數”。例如,要將集合復制到新的ArrayList中, 可以編寫new ArrayList<>(collection)。在某些情況下,可能會制作其他臨時副本,如 果要復制的集合非常大,則應用程序應(意識到/監視)制作副本所需的大量資源。
針對G1堆區域大小的改進
默認的堆區域大小計算已更改為默認情況下返回較大的區域。計算仍以2048個區域為目標, 但是兩個方面發生了變化,這些更改提高了啟動和運行時性能 1、僅考慮最大堆大小。舊的計算還考慮了初始堆大小,但是當未設置堆大小時,這可能會 產生意外的行為。 2、區域大小四舍五入到最接近的2的冪,而不是減小。在最大堆大小不是2的冪的情況下, 這將返回更大的區域大小。
Z垃圾收集器(ZGC)現在可以在生產中使用,不再標記為實驗功能。通過使用-XX:+UseZGC命 令行選項啟用ZGC
提供模式匹配來 增強Java編程語言instanceof
if (obj instanceof String s) { // can use s here } else { // can't use s here }
@Data@AllArgsConstructorclass Group {// 組名 private String name;// 人數 private int nums; }
使用它可以替代構造器、equal方法、toString方法,hashCode方法
Point(String name,int nums){}
Java語言中一種新型的類型聲明。像枚舉一樣enum, record是類的受限形式。聲明其表示形式,并提交與該表示形式匹配的API。記錄放棄了類通常享有的自由:將API與表示分離的能力。作為回報,記錄獲得了很大程度的簡潔性。
到此,相信大家對“JDK15新特性介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。