java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java字符串拼接

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

作者:思静鱼

Java 里除了 MessageFormat.format(),常见字符串拼接/模板化方式很多,不同场景适用不同方案,下面小编就和大家详细介绍一下它们的区别和具体使用吧

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

1.+拼接(最常用)

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

优点:

适合:

2.StringBuilder

StringBuilder sb = new StringBuilder();

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

String s = sb.toString();

优点:

适合:

3.StringBuffer

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

特点:

现在用得少。

4.String.format()

类似 C 语言 printf。

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

占位符:

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

适合:

缺点:

5.MessageFormat.format()

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

特点:

缺点:

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(","));

适合:

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

比如:

示例(FreeMarker):

你好 ${name}

适合:

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

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

特点:

不要写:

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

企业开发推荐

场景推荐
普通拼接+
循环高性能StringBuilder
日志{}
国际化 i18nMessageFormat
多行模板""" + .formatted()
集合 joinString.join
HTML/邮件模板FreeMarker/Thymeleaf

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

最适合的是:

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

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

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

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

您可能感兴趣的文章:
阅读全文