JDK21 | 借鉴了近十种语言,String终于变好用了

news/2024/7/7 19:23:26 标签: python, 开发语言, java
JDK21 概述
  • JDK21 是最新的长期支持(LTS)版本。
  • 引入了多个新特性,特别是 JEP430,即字符串模板。
字符串模板动机
  • 字符串模板作为预览功能,简化了字符串的拼接。
  • 编译和执行需要添加参数:
    javac --enable-preview --release 21 Test.java
    java --enable-preview Test
    
传统字符串拼接问题
  • 使用 + 号拼接字符串,可读性差。
  • 使用 StringBufferStringBuilder,代码冗长。
  • 使用 String.format,字符串与参数分离,不利于阅读和编写。
字符串模板功能
  • 借鉴了多种编程语言的字符串插值特性。
STR 模板处理器
  • 使用 STR 前缀和大括号 {} 进行变量替换和逻辑表达式编写。
  • 支持单行和多行模板。
示例代码
  • 单行模板示例:
    java">String fullName = STR."{firstName} {lastName}";
    
  • 多行模板示例(JSON格式):
    java">String json = STR."\"\"\"
    "name":    "{firstName}",
    "phone":   "{phone}",
    "address": "{address}"
    "\"\"\"";
    
FMT 处理器
  • 类似于 STR,但增加了格式化说明符,如 %-12s
RAW 模式
  • 生成 StringTemplate 对象,需要手动处理以获得最终字符串。
自定义模板处理器
  • 通过实现 StringTemplate.Processor 接口自定义模板处理器。
  • 示例:去除字符串中的空格。
自定义处理器示例
  • 实现 process 方法,处理模板片段和值。
总结
  • JDK21 的字符串模板功能是为了解决 Java 在字符串拼接方面的不足。
  • 设计上借鉴了多种语言,提升了字符串操作的易用性。

http://www.niftyadmin.cn/n/5534938.html

相关文章

【JavaEE】多线程代码案例(2)

🎏🎏🎏个人主页🎏🎏🎏 🎏🎏🎏JavaEE专栏🎏🎏🎏 🎏🎏🎏上一篇文章:多线程代码案例(1)&a…

Python酷库之旅-第三方库Pandas(001)

目录 一、Pandas库的由来 1、背景与起源 1-1、开发背景 1-2、起源时间 2、名称由来 3、发展历程 4、功能与特点 4-1、数据结构 4-2、数据处理能力 5、影响与地位 5-1、数据分析“三剑客”之一 5-2、社区支持 二、Pandas库的应用场景 1、数据分析 2、数据清洗 3…

【Android面试八股文】Looper如何在子线程中创建?

文章目录 一、Looper的几个重要方法二、子线程中使用Looper的方式1三、子线程中使用Looper的方式23.1 使用HandlerThread实现3.2 HandlerThread源码解析创建子线程的 Looper必须要通过 Looper.prepare()初始化looper,然后再通过 Looper.loop()方法让 Loop运行起来。 那么具…

在Windows 11上更新应用程序的几种方法,总有一种适合你

序言 让你安装的应用程序保持最新是很重要的,而Windows 11使更新Microsoft应用商店和非Microsoft应用商店的应用程序变得非常容易。我们将向你展示如何使用图形方法以及命令行方法来更新你的应用程序。 如何更新Microsoft Store应用程序 如果你的一个或多个应用程序是从Mic…

SketchUp + Enscape+ HTC Focus3 VR

1. 硬件: 设备连接 2. 软件: 安装steam steamVR Vive Business streaming 3. 操作: 双方登录steam 账号,然后带上头盔,用手柄在HTC Focus3 安装 串流软件,选择串流软件,在Enscape中选择 VR 模式即可 4.最终效果: SketchUp Enscape HTC Focus 3 VR 实时预览_哔哩哔哩_bi…

责任链模式在金融业务中的应用及其框架实现

引言 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它通过为请求创建一个处理链,使多个对象都有机会处理这个请求。责任链模式通过将请求的发送者和接收者解耦,使得多个接收者可以依次处理请求&am…

[ruby on rails]rails6.0升级6.1

1.准备工作 在开始升级过程之前,我们有一些建议的准备工作。 升级的时候,最好一个版本一个版本升级,比如6.0到6.1再到7.0,不要一次从6.0到7.0至少80%的测试覆盖率,测试真的很重要,能确保升级快速完成。本…

论文解读StyleGAN系列——StyleGANv1

论文:A Style-Based Generator Architecture for Generative Adversarial Networks(2018.12) 作者:Tero Karras, Samuli Laine, Timo Aila 链接:https://arxiv.org/abs/1812.04948 代码:https://github.com…