You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串拼接性能对比:Pair<String,String>、StringBuilder与+运算符

字符串拼接方案性能分析(非循环场景)

核心结论

非循环场景下,str1 + str2 和手动使用 StringBuilder 性能完全一致,Apache Commons Pair的方案属于冗余操作,不推荐。

各方案细节拆解

  • StringBuilder 手动拼接
    代码:

    String newStr = (new StringBuilder()).append(str1).append(str2).toString();
    

    这是传统认知里的高效写法,但在非循环场景下,Java编译器会自动优化+运算符到等价的StringBuilder逻辑,所以和下面的+方案没有性能差异。

  • + 运算符拼接
    代码:

    String newStr = str1 + str2;
    

    Java编译器会将这段代码编译为等价的StringBuilder拼接逻辑,和手动写StringBuilder完全一致,同时代码更简洁、可读性更好,优先推荐。

  • Apache Commons Pair 方案
    代码:

    Pair<String, String> key = Pair.of(str1, str2);
    key.getLeft() + key.getRight();
    

    这个方案完全没必要:额外创建了一个Pair对象占用内存,最终还是要通过+运算符完成拼接,性能比前两个方案差,还增加了代码复杂度,直接排除。

关于堆内存问题

拼接两个字符串会生成一个新的String对象,底层char数组大小为两个原字符串长度之和。只要不是频繁创建大量超大字符串,Java的GC机制会自动回收无用的字符串对象,无需过度担心堆内存问题。如果确实是处理超大字符串,三种方案的内存占用本质一致——区别仅在于Pair方案多了一个额外的Pair对象开销。

内容的提问来源于stack exchange,提问作者heisenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:06:28