JDK 新特性

JDK 新特性

  1. 引入模塊

    Java 9 開始引入了模塊(Module),目的是為了管理依賴。使用模塊可以按需打包 JRE 和進一步限制類的訪問權限。

  2. 接口支持私有方法

    JAVA 9 開始,接口里可以添加私有方法,JAVA 8 對接口增加了默認方法的支持,在 JAVA 9 中對該功能又來了一次升級,現在可以在接口里定義私有方法,然后在默認方法里調用接口的私有方法。這樣一來,既可以重用私有方法里的代碼,又可以不公開代碼。

  3. 匿名內部類支持鉆石(diamond)運算符

    JAVA 5 就引入了泛型(generic),到了 JAVA 7 開始支持鉆石(diamond)運算符:<>,可以自動推斷泛型的類型;但是這個自動推斷類型的鉆石運算符不支持匿名內部類,在 JAVA 9 中也對匿名內部類做了支持。

  4. 增強的 try-with-resources

    JAVA 7 中增加了try-with-resources的支持,可以自動關閉資源,但需要聲明多個資源變量時,需要在 try 中寫多個變量的創建過程,JAVA 9 中對這個功能進行了增強,可以引用 try 代碼塊之外的變量來自動關閉。

  5. 棄用 new Integer()

    JAVA 9 開始棄用了 new Integer() 的方式來創建 Integer 對象,推薦通過靜態工廠 Integer.valueOf() 的方式來替代,其它包裝類類似。

  6. 局部變量的自動類型推斷(var)

    JAVA 10 帶來了一個很有意思的語法 var,它可以自動推斷局部變量的類型,以后再也不用寫類型了,也不用靠 lombok 的 var 注解增強了,不過這個只是語法糖,編譯后變量還是有類型的。

    for (var c : CacheConsts.CacheEnum.values()) {if (c.isLocal()) {Caffeine<Object, Object> caffeine = Caffeine.newBuilder().recordStats().maximumSize(c.getMaxSize());if (c.getTtl() > 0) {caffeine.expireAfterWrite(Duration.ofSeconds(c.getTtl()));}caches.add(new CaffeineCache(c.getName(), caffeine.build()));}}
    
  7. java 命令增強

    以前編譯一個 java 文件時,需要先 javac 編譯為 class,然后再用 java 執行,JAVA 11 之后可以直接使用 java 命令。

  8. Java Flight Recorder 開源

    「Java Flight Recorder」 是個非常好用的調試診斷工具,不過之前是在 Oracle JDK 中, JAVA 11 后就開源了,OpenJDK 現在也可以用這個功能。

  9. 文本塊(Text Block)的支持

    JAVA 13 中幫你解決了大段帶換行符的字符串報文的問題,增加了文本塊(""")的支持,可以不通過換行符換行拼字符串,而且不需要轉義特殊字符,就像用模板一樣。

  10. 新增 record 類型

    JAVA 14 新增 record 類型,干掉復雜的 POJO 類,一般我們創建一個 POJO 類,需要定義屬性列表,構造函數,getter/setter方法,比較麻煩,JAVA 14 為我們帶來了一個便捷的創建類的方式 - record。

    不過這個只是一個語法糖,編譯后還是一個 Class,和普通的 Class 區別不大。

    @ConfigurationProperties(prefix = "novel.cors")
    public record CorsProperties(List<String> allowOrigins) {}
    
  11. 更直觀的 NullPointerException 提示

    JAVA 14 優化了 NullPointerException 的提示,讓你更容易定位到哪個對象為空。

  12. switch 語法增強

    switch 從 JDK 14 開始可以通過yield關鍵字來生成結果,并且支持箭頭語法取代case后面的冒號,使用箭頭語法后每個 case 語句后面也無需再加上 break;JDK 17 支持了 case null 的用法。

  13. 新增 jpackage 打包工具

    JAVA 14 新增 jpackage 打包工具,可以直接打包二進制程序,再也不用裝 JRE 了。

    之前如果想構建一個可執行的程序,還需要借助三方工具,將 JRE 一起打包,或者讓客戶電腦也裝一個 JRE 才可以運行我們的 JAVA 程序。

    現在 JAVA 直接內置了 jpackage 打包工具,幫助你一鍵打包二進制程序包。

  14. 新增封閉(Sealed )類

    JAVA 的繼承以前只能選擇允許繼承和不允許繼承(final 修飾),JAVA 15 新增了一個封閉(Sealed )類的特性,可以指定某些類才可以繼承。

  15. 新增垃圾回收器

    JAVA 15 中,兩款垃圾回收器ZGC 和 Shenandoah 正式登陸(默認 G1 ),性能更強,延遲更低。

  16. instanceof 智能轉型

    之前處理動態類型碰上要強轉時,需要先 instanceof 判斷一下,然后再強轉為該類型處理,JDK 16 最終完成了 JEP 394 的定稿,針對 instanceof 智能轉換變量類型,不需要再來一次額外的強轉,語法:x instanceof String s

  17. 引入虛擬線程

    Java 21 中,引入了一種輕量級的線程實現方式-虛擬線程(Virtual Threads),能夠大幅提高 Java 的并發能力,被很多人稱作是史詩級的更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96462.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何高效應對網站反爬蟲策略?

現在大型網站的反爬策略越來越高明了&#xff0c;不僅是對IP訪問頻率、User-Agent請求頭進行異常識別&#xff0c;還會分析IP地址、瀏覽器指紋、JS動態加載、API逆向、行為模式等方式各種設卡&#xff0c;動不動跳出五花八門的驗證碼&#xff0c;非常難搞。 怎么應對反爬是個系…

c++ shared_ptr理解

不是一個智能指針對于一個計數器嗎&#xff1f;怎么變成共有資源的計數器了&#xff1f;你的意思是多個對象共用一個計數器&#xff1f;你問到了 std::shared_ptr 最核心、最精妙的設計機制&#xff01;你的問題非常深刻&#xff1a;“不是一個智能指針對應一個計數器嗎&#x…

002 Rust環境搭建

Rust環境搭建 現在很多集成開發環境(IDE)基本上都支持Rust開發。官方公布的支持工具&#xff1a;https://www.rust-lang.org/zh-CN/tools 這里以Windows 10 64位系統 Visual Studio Code為例來搭建Rust開發環境。 Rust安裝 Rust 的編譯工具依賴 C 語言的編譯工具&#xff0…

【Unity進階】Unity發布PC端,隱藏并自定義默認標題欄

開發環境&#xff1a; Unity2019.3.16f1c1 - 個人版 Visual Studio Community 2019 Windows10 專業版 x64嘿&#xff0c;各位朋友們&#xff01;當咱們歡歡喜喜地把項目打包成PC平臺的exe窗口程序&#xff0c;準備在電腦上一展游戲風采時&#xff0c;卻發現冒出來個Windows風格…

國產延時芯片EH3B05上電延時3秒開關機芯片方案超低功耗

EH3B05-4941-24A1延時開關芯片是一款專為低功耗電子產品設計的高效時序控制器件&#xff0c;其核心功能在于提供精確的多通道延時信號輸出。該芯片采用SOT23-6超小封裝&#xff0c;體積僅為2.9mm2.8mm1.3mm&#xff0c;特別適合空間受限的便攜式設備。其工作電壓范圍覆蓋2.0V至…

大數據與財務管理專業如何轉型做金融科技?

在數字經濟加速演進的今天&#xff0c;金融行業的邊界正在被數據與技術重新定義。傳統金融崗位正經歷深刻變革&#xff0c;而"金融科技"&#xff08;FinTech&#xff09;作為技術與金融深度融合的產物&#xff0c;已成為行業轉型升級的核心引擎。越來越多具備數據背景…

Windows、Linux 系統 nodejs 和 npm 版本更新及錯誤修復

一、推薦使用 nvm 工具&#xff0c;直接通過命令行安轉和切換各個版本 無論是 Windows 平臺&#xff0c;還是 Linux 平臺&#xff0c;都推薦使用 nvm 工具。 nvm&#xff08;Node.js Version Management&#xff09;&#xff0c;是一個 nodejs 的版本管理工具。它是專門為解決…

【系列文章】Linux中的并發與競爭[03]-自旋鎖

【系列文章】Linux中的并發與競爭[03]-自旋鎖 該文章為系列文章&#xff1a;Linux中的并發與競爭中的第3篇 該系列的導航頁連接&#xff1a; 【系列文章】Linux中的并發與競爭-導航頁 文章目錄【系列文章】Linux中的并發與競爭[03]-自旋鎖一、自旋鎖二、實驗程序的編寫2.1驅動…

開始 ComfyUI 的 AI 繪圖之旅-Cosmos Predict2世界模型文生圖(全網首發,官網都沒有更新)(十三)

文章標題一、Cosmos-Predict21.Cosmos Predict2 Text2Image 工作流1.1 下載工作流文件1.2 手動模型安裝1.3 按步驟完成工作流運行本文介紹了如何在 ComfyUI 中完成 Cosmos-Predict2 文生圖的工作流 一、Cosmos-Predict2 Cosmos-Predict2 是由 NVIDIA 推出的新一代物理世界基礎模…

深度學習優化器進化史:從SGD到AdamW的原理與選擇

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;注冊即送-H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 引言&#xff1a;優化器——深度學習的引擎 在深度學習…

工商業屋頂分布式光伏監控系統助力園區企業錯峰有序用電

一、行業痛點與需求分析分布式光伏發電作為清潔能源的重要形式&#xff0c;近年來在工商業屋頂、戶用場景中快速普及。然而&#xff0c;其“小而散”的特性導致電網適應性、運維效率、安全管控等方面面臨顯著挑戰&#xff1a;1.電網適應性難題&#xff1a;高滲透率場景下&#…

華為初級認證培訓需要嗎?HCIA考試考什么內容?自學還是報班?

大家好&#xff0c;這里是G-LAB IT實驗室。 在信息技術發展日新月異的今天&#xff0c;華為的ICT認證逐漸成為了行業內重要的技術標桿。而HCIA&#xff08;Huawei Certified ICT Associate&#xff09;作為華為初級認證&#xff0c;對于ICT技術從業者來說&#xff0c;既是職業發…

元宇宙與旅游產業:沉浸式體驗重構旅行全流程

1 元宇宙重構旅游核心場景1.1 目的地體驗&#xff1a;從 “實地觀光” 到 “虛實融合深度探索”傳統旅游目的地體驗受限于時間、空間與物理條件&#xff0c;元宇宙通過 “數字孿生 超現實創作”&#xff0c;打造 “超越實地” 的沉浸式目的地體驗。在文化遺產體驗中&#xff0…

sqlite3移植和使用(移植到arm上)

s3c2440 方法一&#xff1a; 在代碼中編寫插入命令 1.復制源代碼并解壓 源代碼鏈接&#xff1a;SQLite Download Page 2.生成動態庫 3.將動態庫復制到根目錄下的/usr/lib/下 4.編寫一個操作文件sq_insert.c 5.編譯sq_insert.c 6.將生成的運行文件 復制到根目錄下 7.運行./s…

抗量子密碼學算法

抗量子密碼學算法的核心目標是抵抗量子計算機&#xff08;尤其是能運行Shor算法、Grover算法的大規模量子計算機&#xff09;的攻擊&#xff0c;其安全性不依賴于傳統的“大整數分解”“離散對數”等易被量子算法破解的數學問題&#xff0c;而是基于量子計算機難以高效求解的新…

設計模式(C++)詳解—工廠方法模式(2)

<摘要> 工廠方法模式就像一個萬能玩具工廠&#xff0c;爸爸&#xff08;抽象工廠&#xff09;定義了制作玩具的標準流程&#xff0c;但讓兒子們&#xff08;具體工廠&#xff09;決定具體生產哪種玩具。這種模式解決了"既要規范生產流程&#xff0c;又要靈活適應變化…

187. Java 異常 - 什么是異常?

文章目錄187. Java 異常 - 什么是異常&#xff1f;&#x1f6a8; 什么是“異常”&#xff1f;? 定義&#xff1a;&#x1f9f1; 異常對象中包含什么&#xff1f;Java 是怎么“處理”異常的&#xff1f;&#x1f9ef; 什么是異常處理器&#xff08;Exception Handler&#xff0…

3D Tiles 工具

概述 3D Tiles 工具是一組用于轉換、優化、處理和分析 3D Tiles 數據的工具和實用程序。 安裝 要在本地目錄中安裝 3D Tiles 工具&#xff0c;請運行以下命令&#xff1a; npm install 3d-tiles-tools如果想直接使用 Git 倉庫的克隆版本&#xff0c;請參閱開發者設置。 命…

【編號520】全國4500多個地震災害點位數據(2021.2-2025.8)

今天小編整理分享的是 全國4500多個地震災害點位數據&#xff08;2021.2-2025.8)。概況數據概況全國4500多個地震災害點位數據&#xff08;2021.2-2025.8&#xff09;地質災害點位數據-地震&#xff01;數據含發生時間、地點、經緯坐標、災害規模等。數據為shp格式和excel表格…

DriftingBlues: 4靶場滲透

DriftingBlues: 4 來自 <https://www.vulnhub.com/entry/driftingblues-4,661/> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168.23…