当前位置: 代码网 > it编程>编程语言>Java > Java中常见的字符串拼接/模板化方式详解

Java中常见的字符串拼接/模板化方式详解

2026年05月09日 Java 我要评论
java 里除了 messageformat.format(),常见字符串拼接/模板化方式很多,不同场景适用不同方案。1.+拼接(最常用)string s = "姓名:" + name + ",年龄:

java 里除了 messageformat.format(),常见字符串拼接/模板化方式很多,不同场景适用不同方案。

1.+拼接(最常用)

string s = "姓名:" + name + ",年龄:" + age;

优点:

  • 最简单
  • 编译器会优化成 stringbuilder
  • 性能不错

适合:

  • 日常开发
  • 少量拼接

2.stringbuilder

stringbuilder sb = new stringbuilder();

sb.append("姓名:")
  .append(name)
  .append(",年龄:")
  .append(age);

string s = sb.tostring();

优点:

  • 性能高
  • 大量循环拼接推荐

适合:

  • for 循环
  • 高频字符串构建

3.stringbuffer

stringbuffer sb = new stringbuffer();
sb.append("abc");

特点:

  • 线程安全(加锁)
  • stringbuilder

现在用得少。

4.string.format()

类似 c 语言 printf。

string s = string.format(
        "姓名:%s,年龄:%d",
        name,
        age
);

占位符:

占位符类型
%s字符串
%d整数
%f浮点
%tf日期

适合:

  • 格式化输出
  • sql/日志模板

缺点:

  • 性能一般
  • 国际化不如 messageformat

5.messageformat.format()

messageformat.format(
        "姓名:{0},年龄:{1}",
        name,
        age
);

特点:

  • 国际化 i18n 常用
  • 支持数字/日期格式
  • 支持多语言资源文件

缺点:

  • 有 locale 自动格式化
  • ' 单引号坑
  • 阿拉伯语数字本地化问题

6. java 15+ text block(文本块)

适合多行模板。

string s = """
        用户:%s
        年龄:%d
        """.formatted(name, age);

这是现在比较现代的写法。

7..formatted()(java 15+)

本质是 string.format() 简化版。

string s = "姓名:%s,年龄:%d"
        .formatted(name, age);

比:

string.format(...)

更简洁。

8.stringjoiner

专门做分隔符拼接。

stringjoiner joiner = new stringjoiner(",");

joiner.add("a");
joiner.add("b");
joiner.add("c");

system.out.println(joiner);

输出:

a,b,c

9.string.join()

string s = string.join(",", "a", "b", "c");

或者:

list<string> list = arrays.aslist("a", "b", "c");

string s = string.join(",", list);

10. stream 拼接

list<string> list = arrays.aslist("a", "b", "c");

string s = list.stream()
        .collect(collectors.joining(","));

适合:

  • 集合处理
  • stream 风格

11. 模板引擎(企业项目常用)

比如:

  • thymeleaf
  • freemarker
  • velocity
  • mustache

示例(freemarker):

你好 ${name}

适合:

  • 邮件模板
  • html
  • 国际化文案
  • 大段文本

12. slf4j 日志占位符(日志推荐)

log.info("用户 {} 登录,ip {}", name, ip);

特点:

  • 不会提前拼接
  • 性能更好
  • 日志推荐

不要写:

log.info("用户:" + name);

企业开发推荐

场景推荐
普通拼接+
循环高性能stringbuilder
日志{}
国际化 i18nmessageformat
多行模板""" + .formatted()
集合 joinstring.join
html/邮件模板freemarker/thymeleaf

你现在这个:阿拉伯语 + i18n + 占位符

最适合的是:

  • messageformat
  • 或 icu4j(更专业国际化)

但如果只是简单替换,其实可以直接:

template.replace("{0}", value)

反而更稳定,不会触发 locale 自动数字转换。

以上就是java中常见的字符串拼接/模板化方式详解的详细内容,更多关于java字符串拼接的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com