我们为什么那么关注 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,一经查实,立即删除!

相关文章

试编写算法将带头结点的单链表就地逆置(就地是指辅助空间复杂度为 O(0))。

题目描述&#xff1a;试编写算法将带头结点的单链表就地逆置&#xff08;就地是指辅助空间复杂度为 O(0)。 分析&#xff1a; 将单链表就地逆置可以考虑使用头插法。 LinkList Reverse(LinkList L){LNode *p L->next;LNode *r;L->next NULL;while(p){r p->next;p…

redis中使用pipeline

在操作数据库时&#xff0c;为了加快程序的执行速度&#xff0c;在新增或更新数据时&#xff0c;可以通过批量提交的方式来减少应用和数据库间的传输次数&#xff1b;在redis中也有这样的技术实现批量处理&#xff0c;也就是管道——Pipeline。它也是通过批量提交数据的方式来实…

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

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

力扣-435.无重叠空间

利用快排&#xff0c;对数组右边界进行排序。 用一个变量记录区间的分割点&#xff0c;然后用这个分割点去和下一个区间做比较&#xff0c;如果没有重叠&#xff0c;更新右边界&#xff0c;没有重叠的区间个数加一。 然后更新右边界&#xff0c;继续进行比较。 最后用总区间…

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

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

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

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

Springboot 项目关于版本升级到 3.x ,JDK升级到17的相关问题

由于spring 停止对2.x 版本的维护&#xff0c;以及 jdk 频繁发布等客观因素&#xff0c;现需要对已有springboot 工程做一次全面升级&#xff1b;已因对市面上第三方等依赖库的兼容问题&#xff1b; 现有工程使用哥技术栈是版本&#xff1a; freemarker &#xff1a;2.3.32 spr…

Segment Anything--SAM框架(二)

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

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 9 章:种子词提示

要求CHATGPT高质量回答的艺术&#xff1a;提示工程技术的完整指南—第 9 章&#xff1a;种子词提示 种子词提示是一种通过提供特定种子词或短语来控制 ChatGPT 输出的技术。 种子词提示符的提示公式是种子词或短语&#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)…

算法通关村第十四关|黄金挑战|数据流的中位数

数据流的中位数 原题&#xff1a;力扣295. 设计一种数据结构可以支持添加整数和返回中位数的操作。 之前写过找中间用两个堆&#xff0c;这道题就可以使用一个大顶堆和一个小顶堆。 大顶堆存储比较小的元素&#xff0c;小顶堆存储比较大的元素。 class MedianFinder {Prio…

quickapp_快应用_DOM节点

DOM $element获取某元素的宽高 $element $element是通用方法(提供给所有组件调用的方法) 获取指定 id 的组件 dom 对象&#xff0c;如果没有指定 id&#xff0c;则返回根组件 dom 对象用法。 this.$element(id名)获取某元素的宽高 const element this.$element(元素id名)…

龙芯loongarch64服务器编译安装pytorch

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

supervisor杀死不掉程序的问题分析

项目场景&#xff1a; supervisor可以说是linux上大名鼎鼎的守护进程工具了&#xff0c;它的易用性在我所有用过的工具里算是排名前列的。但在使用过程中也不免会出一些问题&#xff0c;很多都是设置错误导致的。 问题描述 使用java启动一个jar&#xff0c;调用stop的时候jar…

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

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