我们为什么那么关注 Java 中的 String Template ,Java 21 特性

本心、输入输出、结果

文章目录

  • 我们为什么那么关注 Java 中的 String Template ,Java 21 特性
    • 前言
      • String Template
      • String Template 有什么好处
      • 字符串连接 – 一个常见但无趣且容易出错的任务
      • jetbrains IDEA 2023.2 版本及以上对于 String Template 的支持
      • 字符串模板和 IntelliJ IDEA 中的嵌入式表达式
      • 花有重开日,人无再少年
      • 实践是检验真理的唯一标准

我们为什么那么关注 Java 中的 String Template ,Java 21 特性


编辑:简简单单 Online zuozuo
地址:https://blog.csdn.net/qq_15071263

个人简介 : 简简单单Online zuozuo,目前主要从事 Java 相关工作,商业方向为 B、G 端,主要使用Java、Python 进行日常开发,喜欢探索各个方面的内容,对很多的方向、内容感兴趣 :目前对 AIGC、云计算、物联网方向感兴趣

未闻万里蓬莱,而窥先圣遗智。故,以此生筑梦,奔而逐之;以泰山之伟,攀而登之;以静雅素心,处世为人。

欢迎有兴趣的朋友相互交流,共同成长。微信: tja6288 商务合作/资料获取/技术交流


如果觉得本文对你有帮助,欢迎点赞、收藏、评论

前言

在这里插入图片描述

现有的字符串连接选项很难使用,并且可能容易出错。字符串模板(Java 21 中引入的预览功能)通过将常量字符串与变量值合并,极大地改进了我们在Java 中创建字符串的方式

在这里插入图片描述

String Template

此功能的名称几乎说明了一切 - 字符串模板。将其视为包含字符串文本和变量值的模式。变量值可以是变量、表达式或方法调用,它们的值在运行时注入

代码是什么样子的,下面是一个示例,它使用字符串模板创建具有文本和变量值的多行字符串,并将其传递给:logger.info()

logger.info(STR."""Order processed successfully:Order ID: \{orderId}, placed on \{orderDate}\{product}, \{quantity} (\{product.contains("pens") ? "dozens" : "units"})Total Price: \{calculatePrice(product, quantity)}""");

在这里插入图片描述

String Template 有什么好处

简化了字符串创建——您不再需要使用串联运算符(如“+”),尤其是在处理较长或多行字符串时

多行字符串包括 String 文本和变量值的组合(通过变量、方法调用,甚至是返回值(如三元运算符)的代码片段)。通过将变量值包含在
String 中,可以更清楚地了解其值的插入位置。当然,也有像 、 和 这样的替代方案

字符串模板提供的不仅仅是使用字符串连接读取和写入代码的便利性,将变量值与 String 常量混合使用时,它们提供了一层安全性

在这里插入图片描述

字符串连接 – 一个常见但无趣且容易出错的任务

以下是一个字符串拼接的代码示例

public void processOrder(int orderId,String product,int qty,LocalDate orderDate){if(quantity<=0){String errorMessage="Invalid order quantity: "+qty+" for product "+product+", order ID "+orderId;logger.error(errorMessage);return;}//.. Remaining code}

但是可能经常会因为空格问题导致出现错误

Invalid order quantity: -5for productWidget,order ID12345

在这里插入图片描述

jetbrains IDEA 2023.2 版本及以上对于 String Template 的支持

从 IntelliJ IDEA 版本 2022.2.2 开始提供对 Java 21 的基本支持。在其“2023.3 版本”中添加了更多支持

若要使用字符串模板,请转到“项目设置”|”项目,将项目 SDK 设置为 21,并将项目语言级别设置为“21(预览版)– 字符串模板、未命名类和实例主方法等

在这里插入图片描述

如果您已经在系统上下载了 JDK 21,则可以使用它,或者通过单击“编辑”,然后选择“添加 SDK >”,然后选择“下载 JDK
21…”来下载它。您可以从供应商列表中进行选择

在“模块”选项卡上,确保为模块选择相同的语言级别 – '21 (预览版) – 字符串模板、未命名的类和实例主方法等:

在这里插入图片描述

在这里插入图片描述

字符串模板和 IntelliJ IDEA 中的嵌入式表达式

@

每个嵌入的表达式都必须包含在 中。键入时,IntelliJ IDEA 会为您添加结束语 ‘’
。它还提供代码完成功能,以帮助您选择作用域中的变量或其上的任何方法。如果插入的代码无法编译,IntelliJ IDEA 也会突出显示该代码(作为编译错误)

在这里插入图片描述

花有重开日,人无再少年

在这个充满困难和挑战的时期内,我们依然应该保持积极向上,放下遥不可及的欲望,平凡的普通人也可以成就自己的小梦想

在这个充满变化和无限可能的世界里,每一天都是新的开始。让我们拥抱今天,以积极乐观的心态去面对生活的挑战和机遇。

无论我们遇到什么困难,都要相信自己的力量和智慧,勇敢地迎接挑战。因为每一次的克服和超越,都将使我们的生命更加丰富多彩。

我们要学会欣赏生活中的美好事物,用感恩的心去珍惜所拥有的一切。这样,我们就会发现,快乐其实就在我们的身边,时时刻刻陪伴着我们。

让我们保持对未来的信心和热情,勇敢地追求自己的梦想。无论路途多么艰辛,只要我们坚持不懈,终将实现自己的目标。

让我们一起相信,只要我们心中充满阳光,就没有什么能够阻挡我们前进的步伐。让我们用积极乐观的心态,书写属于我们的精彩人生!

实践是检验真理的唯一标准

✅ 🥶 😎 😟 😲 😰 😭 😓
🔔️ 😂 😅 😍 😘 😚 😜 🤢
👿 💀 👽 👾 😻 💕 💔 💯
💦 💤 🤝 🙍‍♂️ 🙍 🍊 🍉 🍏

感谢亲的点赞、收藏、评论,一键三连支持,谢谢

在这里插入图片描述

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

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

相关文章

FPS和SFTP的速度哪个更快?区别在哪里?

在互联网时代&#xff0c;我们频繁需要传输大文件&#xff0c;如视频、音乐、图片和文档等。这些文件不仅占用大量空间&#xff0c;而且传输时间长。确保传输过程的安全性和稳定性&#xff0c;以防文件被窃取或损坏成为重要考虑因素。在选择传输方式时&#xff0c;FPS和SFTP是两…

Databend 如何利用 GPT-4 进行质量保证

背景 在数据库行业&#xff0c;质量是核心要素。 Databend 的应用场景广泛&#xff0c;特别是在金融相关领域&#xff0c;其查询结果的准确性对用户至关重要。因此&#xff0c;在快速迭代的过程中&#xff0c;如何确保产品质量&#xff0c;成为我们面临的重大挑战。 随着 Da…

leaflet:经纬度坐标转为地址,点击鼠标显示地址信息(137)

第137个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中将经纬度坐标转化为地址,点击鼠标显示某地的地址信息 。主要利用mapbox的api将坐标转化为地址,然后在固定的位置显示出来。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示…

Segment Anything--SAM框架(二)

文章目录 prologuepaper && codeImage encoderPrompt encoderLightweight mask decoderMaking the model ambiguity-aware prologue 没什么事&#xff0c;写一写SAM的paper中关于模型框架的部分和实际代码部分。 paper && code SAM有三个组件&#xff0c;如图…

【PTA题目】7-31 前世档案 分数 20

7-31 前世档案 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 网络世界中时常会遇到这类滑稽的算命小程序&#xff0c;实现原理很简单&#xff0c;随便设计几个问题&#xff0c;根据玩家对每个问题的回答选择一条判断树中的路径&#xff08;如下图所示&#xff09…

【若依系列】1.项目修改成自己包名并启动服务

项目下载地址&#xff1a; 分离版本 https://gitee.com/y_project/RuoYi-Vue 修改工具下载 https://gitee.com/lpf_project/common-tools 相关截图&#xff1a; 1.项目结构&#xff1a; 2.修改包名工具&#xff1a; 工具截图&#xff0c;根据对应提示自定义修改即可&#x…

【JS】检索树结构,并返回结果节点的路径与子节点

【JS】检索树结构&#xff0c;并返回结果节点的路径与子节点 需求代码效果展示 需求 一个树结构&#xff0c;需要添加条件检索功能&#xff0c;检索结果依然是一个树结构&#xff0c;包含所有的符合要求的节点&#xff0c;以及他们到根节点的路径&#xff0c;与他们的子节点 …

Spring Boot基础

文章目录 一、Spring Boot1. Spring的缺点2. Spring Boot 改变了什么3. Spring Boot项目搭建4. 热部署5. 依赖管理6. 代码生成器7. 日志8. 日期转换9. 接口文档10. 打包部署11. 自动装配 一、Spring Boot 1. Spring的缺点 在Spring Boot出现以前&#xff0c;使用Spring框架的…

二叉树OJ题之三

哈喽伙伴们&#xff0c;有一段时间没更新博客了&#xff0c;主要是这段时间要准备学校的期末考试&#xff0c;所以没有把部分时间分给博客&#xff0c;今天我们一起去接着看二叉树递归有关的OJ题&#xff0c;今天我们要学习的是 判断相同的树&#xff0c;力扣题目--100 &…

JSONArray添加JSONObject数据组装后,toString()发现值有{“$ref“:“$[0]“}乱码问题

出现这个问题是FastJson的循环引用造车的&#xff0c;可以手动设置取消FastJson的循环引用的检查。代码如下&#xff1a; JSONArray oaArr new JSONArray(); //取消JSON循环引用检查 String s JSON.toJSONString(oaArr, SerializerFeature.DisableCircularReferenceDetect)…

龙芯loongarch64服务器编译安装pytorch

前言 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序,它是一个基于Python的可续计算包。在通过龙芯开源仓库下载依赖包后,执行import torch后,发现其中安装的"pytorch"就无法正常使用,这里就演示下pytorch整个编译流程。 1、环境准…

推荐一款Excel快速加载SQL的插件,方便又好用

如果告诉你只需要双击一下&#xff0c;SQL数据库中存放在表里面的数据&#xff0c;就能加载到你的Excel中&#xff0c;你想不想要&#xff1f; 今天给大家推荐一款好用的Excel插件&#xff0c;安装简单&#xff0c;使用方便&#xff0c;是经常使用SQL数据库的不二。 这款插件…

Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

文章目录 HTTP协议1.HTTP协议是什么&#xff1f;2.HTTP协议的特点3.什么是URL?4.通过浏览器控制台学习HTTP协议Request Headers请求数据格式说明Response Headers请求数据格式说明 5.HTTP工作原理 HTTP协议 1.HTTP协议是什么&#xff1f; HTTP协议是一种超文本传输协议&…

前端实现主题(深色模式)切换的几种方案

方案一&#xff1a;link 动态引入 通过改变link 标签的 href 属性实现动态修改样式&#xff08;暂不推荐这种方案&#xff09; 优点&#xff1a;实现了按需加载&#xff0c;提高了性能&#xff1b; 缺点&#xff1a;动态加载样式文件&#xff0c;可能会因为网络问题导致样式…

使用Scanner扫描器和if语句来判断QQ等级的活跃程度

一、主要特点 总体使用try包围起来&#xff0c;用到了Scanner扫描器&#xff0c;还用到了若干if语句。 二、运行代码 import java.util.Scanner; public class QQtest {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.pr…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后&#xff0c;又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上&#xff0c;星纪魅族集团&#xff08;下称“魅族”&#xff09;董事长兼CEO沈子瑜宣布&#xff0c;魅族正式进入汽车市场&#xff0c;将在2024年第一季度启动“DreamCar共创…

【STM32】STM32学习笔记-课程简介(01)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

win10与 vm虚拟机win7共享文件夹创建

1:在win10&#xff08;主机&#xff09;电脑先随意共享一个文件夹 2&#xff1a;在win10&#xff08;主机&#xff09;上创建一个网络映射 右键此电脑选择映射网络驱动器 成功后会多出这个网络位置 3&#xff1a;win7虚拟机设置 在虚拟机中点击计算机右键添加一个网络位置

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name&#xff1a;input.1 tensor&#xff1a;Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…

安卓开发引入网络图片

<ImageViewandroid:id"id/img01"android:layout_width"match_parent"android:layout_height"200dp"android:layout_weight"1"/>ImageView加载网路图片 第一步&#xff1a;添加网络权限 <uses-permission android:name"…