最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2026年05月09日 14:57:32   作者:思靜魚  
Java 里除了 MessageFormat.format(),常見字符串拼接/模板化方式很多,不同場景適用不同方案,下面小編就和大家詳細(xì)介紹一下它們的區(qū)別和具體使用吧

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

1.+拼接(最常用)

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

優(yōu)點(diǎn):

  • 最簡單
  • 編譯器會(huì)優(yōu)化成 StringBuilder
  • 性能不錯(cuò)

適合:

  • 日常開發(fā)
  • 少量拼接

2.StringBuilder

StringBuilder sb = new StringBuilder();

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

String s = sb.toString();

優(yōu)點(diǎn):

  • 性能高
  • 大量循環(huán)拼接推薦

適合:

  • for 循環(huán)
  • 高頻字符串構(gòu)建

3.StringBuffer

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

特點(diǎn):

  • 線程安全(加鎖)
  • StringBuilder

現(xiàn)在用得少。

4.String.format()

類似 C 語言 printf。

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

占位符:

占位符類型
%s字符串
%d整數(shù)
%f浮點(diǎn)
%tF日期

適合:

  • 格式化輸出
  • SQL/日志模板

缺點(diǎn):

  • 性能一般
  • 國際化不如 MessageFormat

5.MessageFormat.format()

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

特點(diǎn):

  • 國際化 i18n 常用
  • 支持?jǐn)?shù)字/日期格式
  • 支持多語言資源文件

缺點(diǎn):

  • 有 Locale 自動(dòng)格式化
  • ' 單引號(hào)坑
  • 阿拉伯語數(shù)字本地化問題

6. Java 15+ Text Block(文本塊)

適合多行模板。

String s = """
        用戶:%s
        年齡:%d
        """.formatted(name, age);

這是現(xiàn)在比較現(xiàn)代的寫法。

7..formatted()(Java 15+)

本質(zhì)是 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 風(fēng)格

11. 模板引擎(企業(yè)項(xiàng)目常用)

比如:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Mustache

示例(FreeMarker):

你好 ${name}

適合:

  • 郵件模板
  • HTML
  • 國際化文案
  • 大段文本

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

log.info("用戶 {} 登錄,IP {}", name, ip);

特點(diǎn):

  • 不會(huì)提前拼接
  • 性能更好
  • 日志推薦

不要寫:

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

企業(yè)開發(fā)推薦

場景推薦
普通拼接+
循環(huán)高性能StringBuilder
日志{}
國際化 i18nMessageFormat
多行模板""" + .formatted()
集合 joinString.join
HTML/郵件模板FreeMarker/Thymeleaf

你現(xiàn)在這個(gè):阿拉伯語 + i18n + 占位符

最適合的是:

  • MessageFormat
  • 或 ICU4J(更專業(yè)國際化)

但如果只是簡單替換,其實(shí)可以直接:

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

反而更穩(wěn)定,不會(huì)觸發(fā) Locale 自動(dòng)數(shù)字轉(zhuǎn)換。

以上就是Java中常見的字符串拼接/模板化方式詳解的詳細(xì)內(nèi)容,更多關(guān)于Java字符串拼接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中sleep方法和wait方法的五個(gè)區(qū)別

    java中sleep方法和wait方法的五個(gè)區(qū)別

    這篇文章主要介紹了java中sleep方法和wait方法的五個(gè)區(qū)別,sleep?方法和?wait?方法都是用來將線程進(jìn)入休眠狀態(tài),但是又有一些區(qū)別,下面我們就一起來看看吧
    2022-05-05
  • Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Component-Scan 不掃描jar里面的類問題

    Component-Scan 不掃描jar里面的類問題

    這篇文章主要介紹了Component-Scan 不掃描jar里面的類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java實(shí)現(xiàn)二維碼掃碼授權(quán)登陸

    java實(shí)現(xiàn)二維碼掃碼授權(quán)登陸

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)二維碼掃碼授權(quán)登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • SpringBoot項(xiàng)目部署的四種方式詳解

    SpringBoot項(xiàng)目部署的四種方式詳解

    本文詳細(xì)介紹了SpringBoot項(xiàng)目的四種部署方式,包括原始命令部署、寶塔Linux可視化部署、Docker容器化部署和Docker容器平臺(tái)托管,每種方式都有其特點(diǎn)和適用場景,需要的朋友可以參考下
    2026-04-04
  • Spring基于XML實(shí)現(xiàn)Aop

    Spring基于XML實(shí)現(xiàn)Aop

    這篇文章主要介紹了Spring中基于xml的AOP的詳細(xì)步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決

    調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決

    這篇文章主要介紹了調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java使用反射來獲取泛型信息示例

    Java使用反射來獲取泛型信息示例

    這篇文章主要介紹了Java使用反射來獲取泛型信息,結(jié)合實(shí)例形式分析了java基于反射操作泛型信息的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • 使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式

    使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式

    這篇文章主要介紹了使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java接收前端請(qǐng)求體的多種方式總結(jié)

    Java接收前端請(qǐng)求體的多種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java接收前端請(qǐng)求體的多種方式,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

红桥区| 武鸣县| 宜宾县| 伊金霍洛旗| 黔江区| 北海市| 玉龙| 咸宁市| 雅安市| 金沙县| 明光市| 全州县| 淅川县| 云霄县| 治多县| 呼伦贝尔市| 栾川县| 开江县| 芜湖县| 扬中市| 改则县| 昔阳县| 铁岭县| 塘沽区| 浠水县| 石屏县| 大名县| 萍乡市| 古丈县| 天门市| 靖西县| 福清市| 凤冈县| 莫力| 钦州市| 观塘区| 龙南县| 吉木萨尔县| 疏勒县| 凤阳县| 沙田区|