🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

    • JavaSE核心知识点04工具04-01(JDK21)
      • 一、JDK 21 简介
      • 二、JDK 21 的核心新特性
        • 1. **虚拟线程(Virtual Threads)**
        • 2. **分代 ZGC(Generational ZGC)**
        • 3. **序列集合(Sequenced Collections)**
        • 4. **模式匹配增强(Pattern Matching)**
        • 5. **字符串模板(String Templates)**
        • 6. **未命名模式和变量(Unnamed Patterns & Variables)**
      • 三、如何安装和配置 JDK 21
      • 四、学习路径建议
      • 五、注意事项
      • 六、资源推荐


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

JavaSE核心知识点04工具04-01(JDK21)

我将从基础概念主要特性学习路径等方面为你详细讲解 JDK 21,并提供一些代码示例帮助你理解。本文内容较长,但会尽量通俗易懂。

在这里插入图片描述


一、JDK 21 简介

  • 发布时间:2023 年 9 月
  • 定位:JDK 21 是 Oracle 的长期支持版本(LTS),这意味着它会获得多年的更新和支持,适合企业级应用。
  • 核心目标:提升开发效率、性能优化、简化代码复杂度。

二、JDK 21 的核心新特性

以下是 JDK 21 中最值得关注的特性,尤其是对新手友好的改进:


1. 虚拟线程(Virtual Threads)
  • 是什么:轻量级线程,由 JVM 管理(而非操作系统),可大幅提升并发性能。
  • 为什么重要:传统线程(平台线程)创建和切换成本高,虚拟线程可同时运行数百万个而无需担心资源耗尽。
  • 示例代码
    // 创建虚拟线程执行任务
    Thread virtualThread = Thread.ofVirtual().start(() -> {System.out.println("Hello from virtual thread!");
    });
    virtualThread.join(); // 等待线程结束
    

2. 分代 ZGC(Generational ZGC)
  • 是什么:ZGC 是一种低延迟垃圾回收器,JDK 21 将其升级为分代模式。
  • 为什么重要:分代 ZGC 能更高效处理短期对象(如临时变量),减少垃圾回收停顿时间。
  • 启用方式:JVM 参数 -XX:+UseZGC -XX:+ZGenerational

3. 序列集合(Sequenced Collections)
  • 是什么:新增 SequencedCollectionSequencedSet 等接口,统一集合的“顺序访问”操作。
  • 示例代码
    List<String> list = new ArrayList<>(List.of("a", "b", "c"));
    // 获取第一个和最后一个元素
    String first = list.getFirst();   // "a"
    String last = list.getLast();     // "c"
    // 逆序视图
    SequencedCollection<String> reversed = list.reversed();
    

4. 模式匹配增强(Pattern Matching)
  • 是什么:简化 instanceof 检查和类型转换,使代码更简洁。
  • 示例代码
    Object obj = "Hello";
    if (obj instanceof String s) { // 直接匹配并赋值给变量 sSystem.out.println(s.toUpperCase()); // 输出 "HELLO"
    }
    

5. 字符串模板(String Templates)
  • 是什么:类似其他语言的字符串插值功能,避免繁琐的字符串拼接。
  • 示例代码
    String name = "Alice";
    int age = 30;
    String info = STR."My name is \{name}, age is \{age}";
    // 输出 "My name is Alice, age is 30"
    

6. 未命名模式和变量(Unnamed Patterns & Variables)
  • 是什么:用下划线 _ 忽略未使用的变量或模式,增强代码可读性。
  • 示例代码
    try {int result = calculate();
    } catch (Exception _) { // 忽略异常对象System.out.println("Error occurred");
    }
    

三、如何安装和配置 JDK 21

  1. 下载

    • Oracle JDK:访问 Oracle官网(需注册账号)。
    • OpenJDK:推荐使用 Eclipse Temurin 或 Amazon Corretto。
  2. 环境变量配置

    • 设置 JAVA_HOME 指向 JDK 21 安装目录。
    • JAVA_HOME/bin 添加到 PATH 环境变量。
  3. 验证安装

    java -version
    # 应输出 "java version "21" ..."
    

四、学习路径建议

  1. 先学 Java 基础:掌握语法、面向对象、集合框架等。
  2. 逐步尝试新特性
    • 虚拟线程字符串模板入手(直观且实用)。
    • 再学习模式匹配序列集合
  3. 动手实践:写小项目(如并发任务、数据处理)应用新特性。
  4. 官方文档:阅读 Oracle JDK 21 文档。

五、注意事项

  1. 预览特性:某些功能(如字符串模板)需启用预览模式:
    javac --release 21 --enable-preview Main.java
    java --enable-preview Main
    
  2. IDE 支持:确保 IntelliJ IDEA 或 Eclipse 更新到最新版本以支持 JDK 21。

六、资源推荐

  • 官方教程:Java Tutorials
  • 书籍:《Java核心技术 卷Ⅰ》(第12版已涵盖新特性)
  • 社区:Stack Overflow、GitHub 开源项目。

希望这些内容能帮助你入门 JDK 21!如果有具体问题或需要更深入的解释,请随时告诉我! 😊



📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/82417.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/82417.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/82417.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库入门:以商品订单系统为例

数据库入门&#xff1a;以商品订单系统为例 一、前言 数据库是现代软件开发中不可或缺的基础&#xff0c;掌握数据库的基本概念和操作&#xff0c;是每个开发者的必经之路。本文将以“商品-品牌-客户-订单-订单项”为例&#xff0c;带你快速入门数据库的核心知识和基本操作。…

UE失落方舟特效学习 笔记01

通过法线扭曲贴图 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_0" ExportPath"/Script/UnrealEd.MaterialGraphNode/Engine/Transient.M_RadialUV_01:MaterialGraph_0.MaterialGraphNode_0"Begin Object Class/Script/E…

跨境支付风控失效?用代理 IP 构建「地域 - 设备 - 行为」三维防护网

针对跨境支付风控失效问题&#xff0c;结合代理IP技术构建「地域-设备-行为」三维防护网是当前最有效的解决方案。以下是基于最新实践的技术路径与策略指南&#xff1a; 一、地域维度&#xff1a;IP地理特征精准匹配 IP属地真实性验证 优先选择住宅代理IP&#xff08;Residenti…

AI的“软肋”:架构设计与业务分析的壁垒

尽管人工智能&#xff08;AI&#xff09;在代码生成、数据分析等方面取得了显著进展&#xff0c;但在架构设计和业务分析的核心领域&#xff0c;人类的智慧和经验仍然是不可替代的。这些领域往往涉及高度的抽象思维、战略远见、对复杂商业逻辑的深刻理解以及在模糊不清的环境中…

【Redis实战篇】基于Redis的功能实现附近商铺查询(Geo),用户签到与统计(Bitmap),网站UV统计(HyperLogLog)

文章目录 附近商铺GEOSEARCH 实现语法参数解释 GEORADIUS 实现基本语法参数详解必选参数可选参数参数详解必选参数 代码实现 用户签到BitmapRedis 中 Bitmap 基本操作1. 设置位值2. 获取位值3. 统计位值为 1 的数量4. 位图运算 Spring Data Redis 中操作 Bitmap1. 操作示例(1) …

【C++高阶一】二叉搜索树

【C高阶一】二叉搜索树剖析 1.什么是二叉搜索树2.二叉搜索树非递归实现2.1插入2.2删除2.2.1删除分析一2.2.2删除分析二 2.3查找 3.二叉搜索树递归实现3.1插入3.2删除3.3查找 4.完整代码 1.什么是二叉搜索树 任何一个节点&#xff0c;他的左子树的所有节点都比他小&#xff0c;右…

前端面试热门知识点总结

URL从输入到页面展示的过程 版本1 1.用户在浏览器的地址栏输入访问的URL地址。浏览器会先根据这个URL查看浏览器缓存-系统缓存-路由器缓存&#xff0c;若缓存中有&#xff0c;直接跳到第6步操作&#xff0c;若没有&#xff0c;则按照下面的步骤进行操作。 2.浏览器根据输入的UR…

Swagger | 解决Springboot2.x/3.x不兼容和依赖报错等问题

目录 不兼容报错提醒 1. 修改Spring Boot版本 2. 修改application.yml配置文件 3. 使用其他替代方案 依赖兼容 配置 Yaml 文件 依赖报错提醒 解决方法 1. 选择一个库 2. 移除springfox依赖 3. 添加springdoc依赖 4. 配置springdoc 5. 清理项目 6. 启动项目 示例代…

C++默认构造函数、普通构造函数、拷贝构造、移动构造、委托构造及析构函数深度解析

目录 一、默认构造函数&#xff08;Default Constructor&#xff09;二、普通构造函数&#xff08;General Constructor&#xff09;三、拷贝构造函数&#xff08;Copy Constructor&#xff09;四、移动构造函数&#xff08;Move Constructor&#xff0c;C11&#xff09;五、委…

JVM 深度解析

一、JVM 概述 1.1 什么是 JVM&#xff1f; JVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09;是 Java 程序运行的核心引擎。它像一个“翻译官”&#xff0c;将 Java 字节码转换为机器能理解的指令&#xff0c;并管理程序运行时的内存、线程等资源。 …

OpenCV CUDA 模块图像过滤-----创建一个计算图像导数的滤波器函数createDerivFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::createDerivFilter 是 OpenCV CUDA 模块中的一个工厂函数&#xff0c;用于创建一个计算图像导数的滤波器。这个滤波器可以用来计算图像…

Spring Boot 接口开发实战指南

Spring Boot 接口开发实战指南 一、基础接口开发步骤 1.1 添加必要依赖 <!-- pom.xml --> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></depen…

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形 时间限制: 2s 内存限制: 192MB 提交: 494 解决: 206 题目描述 小蓝要画一个 2025 图形。图形的形状为一个 h w 的矩形&#xff0c;其中 h 表示图形的高&#xff0c;w 表示图形的宽。当 h 5,w 10 时&#xff0c;图形如下所…

UML 时序图 使用案例

UML 时序图 UML 时序图 (Sequence Diagram)时序图的主要元素消息类型详解时序图示例时序图绘制步骤时序图的应用场景 UML 时序图 (Sequence Diagram) 时序图是UML(统一建模语言)中用于展示对象之间交互行为的动态视图&#xff0c;它特别强调消息的时间顺序。 时序图的主要元素…

PPT连同备注页(演讲者模式)一块转为PDF

首先&#xff0c;进入创建PDF/XPS&#xff1a; 然后进入选项&#xff1a; 发布选项-发布内容里选备注页&#xff1a; 导出的原始结果是这样的&#xff1a; 这个时候裁剪一下&#xff0c;范围为所有页面&#xff1a; 最终结果&#xff1a; 如果导出不选“备注页”而是只勾选“包…

AI时代新词-多模态(Multimodal)

一、什么是多模态&#xff08;Multimodal&#xff09;&#xff1f; 多模态&#xff08;Multimodal&#xff09;是指在人工智能中&#xff0c;融合多种不同类型的信息&#xff08;如文本、图像、语音、视频等&#xff09;进行处理和分析的技术。与传统的单一模态&#xff08;例…

【图像大模型】Stable Diffusion XL:下一代文本到图像生成模型的技术突破与实践指南

Stable Diffusion XL&#xff1a;下一代文本到图像生成模型的技术突破与实践指南 一、架构设计与技术演进1.1 核心架构革新1.2 关键技术突破1.2.1 双文本编码器融合1.2.2 动态扩散调度 二、系统架构解析2.1 完整生成流程2.2 性能指标对比 三、实战部署指南3.1 环境配置3.2 基础…

图像分割技术的实现与比较分析

引言 图像分割是计算机视觉领域中的一项基础技术&#xff0c;其目标是将数字图像划分为多个图像子区域&#xff08;像素的集合&#xff09;&#xff0c;以简化图像表示&#xff0c;便于后续分析和理解。在医学影像、遥感图像分析、自动驾驶、工业检测等众多领域&#xff0c;图…

摩尔线程S4000国产信创计算卡性能实战——Pytorch转译,多卡P2P通信与MUSA编程

简介 MTT S4000 是基于摩尔线程曲院 GPU 架构打造的全功能元计算卡&#xff0c;为千亿规模大语言模型的训练、微调和推理进行了定制优化&#xff0c;结合先进的图形渲染能力、视频编解码能力和超高清 8K HDR 显示能力&#xff0c;助力人工智能、图形渲染、多媒体、科学计算与物…

「从0到1」构建工业物联网监控系统:ARM+Quarkus+Prometheus技术栈全记录

在工业4.0浪潮中&#xff0c;边缘计算正成为智能制造的核心基础设施。ARM架构边缘计算机凭借其低功耗、高能效比和模块化设计优势&#xff0c;正在重塑工业物联网&#xff08;IIoT&#xff09;的监控体系。当Java的跨平台能力与Prometheus的实时监控体系相结合&#xff0c;为工…