惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
小众软件
小众软件
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
S
Secure Thoughts
O
OpenAI News
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
H
Heimdal Security Blog

程序猿DD

2.1K Star,一个帮你自动完成JavaDoc注释的IDEA插件 Java 21 新特性:String Templates(字符串模版) 14.4K Star,一款漂亮、快速、现代化的开源UI组件库 推荐一款免费好用的远程桌面:Getscreen Spring Boot通过企业邮箱发邮件被Gmail退回的问题解决方法 34.9K Star!超受欢迎的开源免费后台模版:tabler 10.4K Star!程序员为程序员针对性优化的开源免费笔记 开源免费、开箱即用的中后台管理模版:vue-pure-admin 开源免费的文件投喂与问答工具,构建你的第二大脑:Quivr 内网穿透最好用的还得是ngrok,一行命令就搞定! 一款开源免费、更符合现代用户需求的论坛系统:vanilla 一款极具潜力的开源免费数据库管理工具:slashbase 69.9K Star,最强开源内网穿透工具:frp 效率神器!浏览器自动化操作插件:Automa Notion的开源替代方案:AFFiNE 你的Spring Boot应用启动很慢?不妨试试这个工具! 一款滴滴开源的流程图编辑框架:LogicFlow 基于Spring Boot 3的开源培训系统,学习和自用都不错 Spring 6.1新特性:RestClient
Java自带的4种字符串组织和格式化方法
2023-08-08 · via 程序猿DD

在Java中,组织字符串是平时最常见的操作,这里总结一下Java自带的四种处理方式。

1. 使用+拼接

案例:

String name = "DD";
String host = "blog.didispace.com";
String result = "hello " + name + ", your blog is " + host;

这种方法很容易上手,甚至可以混合使用非字符串值来一起组织。然而,结果代码编写起来非常不易阅读和维护。最大的缺点是每次我们使用+运算符时都会分配一个新的字符串。所以,JDK中还提供了多种优化策略来减少字符串的创建,比如下面的方案2。在工作中,要尽量避免使用方案1,而是下面的方案。

2. 使用StringBufferSpringBuilder

案例:

String name = "DD";
String host = "blog.didispace.com";
String result = new StringBuilder()
.append("hello ")
.append(name)
.append(", your blog is ")
.append(host)
.toString();

StringBufferStringBuilder是专门用于字符串连接的实现类,它们都提供了用于插入、替换和查找字符串的方法。但它们之间还有一定区别,StringBuffer是线程安全的,而StringBuilder则不是,所以在使用的时候要注意场景。

3. 使用String::format and String::formatted

案例:

String name = "DD";
String host = "blog.didispace.com";
String template = "hello %s, your blog is %s";
String result = format.formatter(name, host);

String类本身也提供了一些格式化方法,比如:

  • static String format(String format, Object... args)
  • static String format(Locale locale, String format, Object... args)
  • String formatted(Object... args) (Java 15+)

这些方法是以模版的方式来实现字符串的拼接,可以有效地节省字符串创建的数量。

4. 使用java.text.MessageFormat

案例:

String name = "DD";
String host = "blog.didispace.com";
String result = MessageFormat.format("hello {0}, your blog is {1}", name, host);

MessageFormat类型与上面String本身自带的format有点类似,但语法风格上有很大的差别。MessageFormat的参数风格有点像slf4j,而String自带的format风格更像C语言中的print。

除了这些JDK自带的方案之外,还有很多开发者自己封装的处理方法,后面再总结一些优秀的封装,感兴趣的记得关注下程序猿DD或者收藏我的博客。