国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java基礎(chǔ)系列】JDK21新特性

這篇具有很好參考價值的文章主要介紹了【Java基礎(chǔ)系列】JDK21新特性。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。
jdk21,s1 java基礎(chǔ),java,開發(fā)語言

  • 推薦:kuan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老
  • 導(dǎo)航
    • 檀越劍指大廠系列:全面總結(jié) java 核心技術(shù)點,如集合,jvm,并發(fā)編程 redis,kafka,Spring,微服務(wù),Netty 等
    • 常用開發(fā)工具系列:羅列常用的開發(fā)工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 數(shù)據(jù)庫系列:詳細總結(jié)了常用數(shù)據(jù)庫 mysql 技術(shù)點,以及工作中遇到的 mysql 問題等
    • 懶人運維系列:總結(jié)好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
    • 數(shù)據(jù)結(jié)構(gòu)與算法系列:總結(jié)數(shù)據(jù)結(jié)構(gòu)和算法,不同類型針對性訓(xùn)練,提升編程思維,劍指大廠

非常期待和您一起在這個小小的網(wǎng)絡(luò)世界里共同探索、學(xué)習(xí)和成長。?????? ?? 歡迎訂閱本專欄 ??

1.介紹

JDK 21 已經(jīng)于 2023 年 9 月 19 日正式發(fā)布。本文總結(jié)了 JDK 21 發(fā)布的新特性。

根據(jù)發(fā)布的規(guī)劃,這次發(fā)布的 JDK 21 將是一個長期支持版(LTS 版)。LTS 版每 2 年發(fā)布一個,上一次長期支持版是 21 年 9 月發(fā)布的 JDK 17。不能抱有你強任你強,我用 java8 的思想。

2.版本

主要分為 OpenJDK 版本和 Oracle 版本,下載地址如下:

  • OpenJDK 版本:https://jdk.java.net/21/
  • Oracle 版本:https://www.oracle.com/java/technologies/downloads/

3.JDK21 新特性

  • 序列集合
  • 分代 ZGC
  • 記錄模式
  • switch 模式匹配
  • 虛擬線程
  • 棄用 Windows 32 位 x86 移植
  • 不允許動態(tài)加載代理
  • 密鑰封裝機制

4.安裝 jdk21

jdk21,s1 java基礎(chǔ),java,開發(fā)語言

jdk21,s1 java基礎(chǔ),java,開發(fā)語言

5.虛擬線程

將虛擬線程(Virtual Threads)引入 Java 平臺。虛擬線程是輕量級線程,可以顯著減少編寫、維護和觀察高吞吐量并發(fā)應(yīng)用程序的工作量。

  1. 輕量級線程管理:虛擬線程不需要底層操作系統(tǒng)線程的支持,因此可以創(chuàng)建數(shù)千甚至數(shù)萬個虛擬線程而不會消耗大量的內(nèi)存和資源。這使得應(yīng)用程序可以更高效地管理大量并發(fā)任務(wù)。
  2. 更快的線程創(chuàng)建和銷毀:傳統(tǒng)的 Java 線程創(chuàng)建和銷毀通常涉及昂貴的操作系統(tǒng)調(diào)用,而虛擬線程的創(chuàng)建和銷毀成本更低,因此可以更快速地啟動和停止線程。
  3. 更好的資源利用:由于虛擬線程可以更輕松地伸縮,因此它們有助于更好地利用現(xiàn)有的系統(tǒng)資源,以處理大規(guī)模的并發(fā)請求。
  4. 避免死鎖和資源爭奪:虛擬線程的管理方式可以減少線程之間的競爭和資源爭奪,從而降低了死鎖和性能問題的風(fēng)險。
  5. 簡化并發(fā)編程:虛擬線程的引入使得編寫并發(fā)程序變得更加容易,開發(fā)人員可以專注于業(yè)務(wù)邏輯而不必過多關(guān)注線程管理和同步。
public class Test01 {
    public static void main(String[] args) {
        try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
            IntStream.range(0, 10000).forEach(i -> executor.submit(() -> {
                Thread.sleep(Duration.ofSeconds(1));
                return i;
            }));
        }
    }
}

6.有序集合

在 JDK 21 中,Sequenced Collections 的引入帶來了新的接口和方法來簡化集合處理。此增強功能旨在解決訪問 Java 中各種集合類型的第一個和最后一個元素需要非統(tǒng)一且麻煩處理場景。

Sequenced Collections 引入了三個新接口:

  • SequencedCollection
  • SequencedMap
  • SequencedSet

jdk21,s1 java基礎(chǔ),java,開發(fā)語言

綠色方框是新增的 3 個接口,從中可以看到已有集合類的繼承關(guān)系的變化:

  • List 繼承自 SequencedCollection。

  • Deque 繼承自 SequencedCollection。

  • LinkedHashSet 實現(xiàn)了 SequencedSet 接口。

  • SortedSet 繼承自 SequencedSet。

  • LinkedHashMap 實現(xiàn)了 SequencedMap 接口。

  • SortedMap 繼承自 SequencedMap。

有了這 3 個新的順序集合相關(guān)的接口之后,Java 代碼可以更清楚地表達順序集合以及順序集合上的操作。

這些接口附帶了一些新方法,以提供改進的集合訪問和操作功能。

/**
 * 序列集合
 *
 * @author : qinyingjie
 * @version : 2.2.0
 * @date : 2023/9/26 01:37
 */
public class Test02 {
    public static void main(String[] args) {
        SequencedCollection<Integer> arr = new ArrayList<>();
        arr.addLast(1);
        arr.addLast(2);
        arr.addLast(3);
        arr.addLast(31);
        arr.addFirst(14);
        System.out.println(arr);
    }
}

第一個和最后一個元素的訪問:

在 JDK 21 之前,檢索 Java 中集合的第一個和最后一個元素涉及不同的方法和途徑,具體取決于集合類型。

下面讓我們看一下使用 JDK 21 之前的 JDK API 調(diào)用訪問第一個和最后一個元素的一些示例:

訪問位置 List Deque SortedSet
第一個元素 list.get(0) deque.getFirst() set.first()
最后一個元素 list.get(list.size()-1) deque.getLast() set.last()

可以看到,一個簡單的操作,在不同的集合中需要不同的編寫方式,非常麻煩!

但在 JDK 21 之后,訪問第一個和最后一個元素就方法多了:

對于List, Deque, Set這些有序的集合,訪問方法變得統(tǒng)一起來:

  • 第一個元素:collection.getFirst()
  • 最后一個元素:collection.getLast()

首先是 SequencedCollection,該接口的聲明如下所示:SequencedCollection 繼承自 Collection

interface SequencedCollection<E> extends Collection<E> {
    SequencedCollection<E> reversed();
    void addFirst(E);
    void addLast(E);
    E getFirst();
    E getLast();
    E removeFirst();
    E removeLast();
}

在包含的方法中:

  • reversed 方法返回一個逆序的 SequencedCollection 對象。

  • addFirst 和 addLast 方法分別在集合的起始和結(jié)束位置添加新的元素。

  • getFirst 和 getLast 方法分別獲取集合的第一個和最后一個元素。

  • removeFirst 和 removeLast 方法分別刪除集合的第一個和最后一個元素。

SequencedSet

interface SequencedSet<E> extends Set<E>, SequencedCollection<E> {
    SequencedSet<E> reversed();
}

SequencedMap

SequencedMap 繼承自 Map,其中的 entry 有確定的出現(xiàn)順序。

SequencedMap 中的方法比較多,如下所示:

interface SequencedMap<K,V> extends Map<K,V> {
    SequencedMap<K,V> reversed();
    SequencedSet<K> sequencedKeySet();
    SequencedCollection<V> sequencedValues();
    SequencedSet<Entry<K,V>> sequencedEntrySet();
    V putFirst(K, V);
    V putLast(K, V);

    Entry<K, V> firstEntry();
    Entry<K, V> lastEntry();
    Entry<K, V> pollFirstEntry();
    Entry<K, V> pollLastEntry();
}

具體的方法說明:

  • reversed 方法返回一個 entry 逆序的 SequencedMap。

  • sequencedKeySet 方法返回包含 key 的 SequencedSet。

  • sequencedValues 方法返回包含 value 的 SequencedCollection。

  • sequencedEntrySet 方法返回包含 entry 的 SequencedSet。

  • putFirst 和 putLast 分別在 entry 的最前和最后位置插入名值對。

  • firstEntry 和 lastEntry 分別獲取第一個和最后一個 entry。

  • pollFirstEntry 和 pollLastEntry 分別刪除第一個和最后一個 entry。

7.記錄模式

使用記錄模式(Record Patterns)增強 Java 編程語言,以解構(gòu)記錄值??梢郧短子涗浤J胶皖愋湍J?,以實現(xiàn)功能強大、聲明性和可組合形式的數(shù)據(jù)導(dǎo)航和處理。

/**
 * 記錄類
 *
 * @author : qinyingjie
 * @date : 2023/9/26
 */
public record Test03(int x, int y) {
}

jdk21,s1 java基礎(chǔ),java,開發(fā)語言

static void print(Object o) {
    if (o instanceof Test03(int x, int y)) {
        System.out.println(x + y);
    }
}

8.switch 模式匹配

通過 switch 表達式和語句的模式匹配來增強 Java 編程語言。通過將模式匹配擴展到 switch,可以針對多個模式測試表達式,每個模式都有一個特定的操作,從而可以簡潔、安全地表達復(fù)雜的面向數(shù)據(jù)的查詢。

/**
 * switch模式匹配
 *
 * @author : qinyingjie
 * @version : 2.2.0
 * @date : 2023/9/26 01:37
 */
public class Test04 {
    public static void main(String[] args) {
        Object obj = "你好";
        Object a = switch (obj) {
            case Integer i -> String.format("int %d", i);
            case String s -> String.format("string %s", s);
            case Double d -> String.format("Double %s", d);
            default -> obj.toString();
        };
        System.out.println(a);
    }
}

覺得有用的話點個贊 ???? 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!??????

??????如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!?? ?? ??

??????Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!??????

jdk21,s1 java基礎(chǔ),java,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-762974.html

到了這里,關(guān)于【Java基礎(chǔ)系列】JDK21新特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java】JDK 21中的虛擬線程以及其他新特性

    【Java】JDK 21中的虛擬線程以及其他新特性

    ? 目錄 一、字符串模板(String Templates) 二、序列化集合(Sequenced Collections) 三、分代ZGC(Generational ZGC) 四、記錄模式(Record Patterns) 五、Fibers(纖程) 結(jié)論 JDK 21是Java開發(fā)工具包的最新版本,它引入了許多令人振奮的新特性,旨在提高開發(fā)人員的生產(chǎn)力和代碼質(zhì)量。在本

    2024年02月08日
    瀏覽(25)
  • 【Java系列】JDK 1.8 新特性之 Lambda表達式

    【Java系列】JDK 1.8 新特性之 Lambda表達式

    Lambda是一個匿名函數(shù),我們可以將Lambda表達式理解為一段可以傳遞的代碼(將代碼像數(shù)據(jù)一樣傳遞)。使用它可以寫出簡潔、靈活的代碼。作為一種更緊湊的代碼風(fēng)格,使java語言表達能力得到提升。 結(jié)果: ?19:43:39.303 [main] INFO com.chen.test.JAVA8Features.Demo01 - 我是沒有使用Lambda表

    2024年02月22日
    瀏覽(26)
  • 開啟JDK 11時代,掌握這些新特性,成為Java開發(fā)高手!

    開啟JDK 11時代,掌握這些新特性,成為Java開發(fā)高手!

    大家好,我是小米,歡迎來到小米科技資訊公眾號!今天我將為大家詳細介紹 JDK 11 的一些新特性。JDK 11 是 Java 語言的一個重要版本,它帶來了許多令人振奮的改進和功能,尤其是在電商應(yīng)用領(lǐng)域。讓我們一起來了解吧! JDK 11 引入了全新的 HTTP 客戶端 API,取代了過時的 Ht

    2024年02月11日
    瀏覽(19)
  • JDK21發(fā)布了!面試官:來,談下jdk21的新特性!

    JDK21發(fā)布了!面試官:來,談下jdk21的新特性!

    JDK21 計劃23年9月19日正式發(fā)布,盡管一直以來都是“版隨意出,換 8 算我輸”,但這么多年這么多版本的折騰,若是之前的 LTS 版本JDK17你還覺得不錯,那 JDK21還是有必要關(guān)注一下,因為會有一批重要更新發(fā)布到生產(chǎn)環(huán)境中,特別是被眾人期待已久的虛擬線程,縱然說這東西我

    2024年02月07日
    瀏覽(21)
  • java JDK(21)安裝

    java JDK(21)安裝

    地址:https://www.oracle.com/ 打開后往下滑找到: 傻瓜式向下執(zhí)行安裝即可 注意:cmd跳轉(zhuǎn)到j(luò)ava安裝路徑運行以下指令安裝jre 4 測試是否安裝成功 cmd內(nèi)運行

    2024年02月22日
    瀏覽(15)
  • 【java】JDK21 要來了

    【java】JDK21 要來了

    不過多久,JDK 21 馬上就出來了,看來 Java 這幾年真的是長進了。 目前 Java 的最新穩(wěn)定版是 JDK 20,但這是個過渡版,JDK21就是 LTS 版的了,也快要發(fā)布了,在今年9月份(也就是2023年9月)就要正式發(fā)布了。 但是,猜都不用猜,你肯定還在用 Java 8 吧! 如果說之前的 JDK17你還覺

    2024年02月10日
    瀏覽(21)
  • JDK21新特性

    JDK21新特性

    JDK8新特性 JDK9新特性 JDK10新特性 JDK11新特性 JDK12新特性 JDK13新特性 JDK14新特性 JDK15新特性 JDK16新特性 JDK17新特性 JDK18新特性 JDK19新特性 JDK20新特性 JDK21新特性 JDK 21 于 2023 年 9 月 19 日 發(fā)布,這是一個非常重要的版本,里程碑式。 JDK21 是 LTS(長期支持版),至此為止,目前有

    2024年02月22日
    瀏覽(25)
  • JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    官方地址: https://www.oracle.com/java/technologies/java-se-support-roadmap.html 從上圖可以很清晰得可以看出,JDK7,JDK8,JDK11,JDK17,JDK21是長期維護的版本。從目前來看,JDK8到2023年已經(jīng)有將近10年的歷史了,大多數(shù)依據(jù)JDK8的相關(guān)技術(shù)內(nèi)容已經(jīng)很成熟了,但是大家也看到,JDK在不斷地迭代,JD

    2024年02月21日
    瀏覽(25)
  • Java JDK各版本特性

    Java JDK各版本特性

    ????????Java 8 之前版本中有一些重要特性和改進。以下是其中一些主要特性以及它們發(fā)布版本: Java SE 7(發(fā)布于2011年): Switch 字符串:允許在 switch 語句中使用字符串。 泛型的類型推斷:允許在實例化泛型時,不需要重復(fù)指定泛型參數(shù)類型。 改進的異常處理:引入了多

    2024年02月11日
    瀏覽(19)
  • [Java]JDK17新特性

    [Java]JDK17新特性

    目錄 ? 一、JDK新特性 1.1Java Record 1.1.1Record的使用 1.1.2Instance Methods 1.1.3靜態(tài)方法 Static Method 1.1.4Record構(gòu)造方法 1.1.5Record與Lombok 1.1.6Record實現(xiàn)接口 1.1.7Local Record 1.1.8嵌套Record 1.1.9instanceof判斷Record類型 1.1.10總結(jié) 1.2Switch 1.2.1箭頭表達式 1.2.2yield返回值 1.2.3Java Record 1.3Text Block 1.3.1認識

    2024年02月07日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包