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

Java中向字符串添加单个字符:str+'c'与str+"c"哪种方式更快?

Java中字符串拼接:str+"c" vs str+'c' 性能对比

先直接给结论:在绝大多数业务场景下,两者的性能差异可以忽略不计,但从底层实现逻辑来看,str+'c'会有极其细微的效率优势。

底层实现的核心差异

当你编写str + "c"时,Java编译器会自动将其转换为以下代码:

new StringBuilder(str).append("c").toString()

而str + 'c'则会被转换为:

new StringBuilder(str).append('c').toString()

两者的关键区别在于StringBuilder.append的调用逻辑:

  • append(String)需要先解析传入的字符串对象,取出其内部的字符数组,再将数组内容复制到StringBuilder的缓冲区中——哪怕是单个字符的字符串(比如"c"),这个对象解析和数组复制的步骤也无法省略。
  • append(char)则直接将单个字符写入缓冲区,不需要额外的对象解析操作,执行步骤更简洁。

JDK的编译与运行时优化

JDK的编译器和JVM会做大量优化来缩小两者的差距:

  1. 如果拼接的是常量字符串(比如"abc" + "c"),编译器会直接在编译阶段生成拼接后的完整字符串,完全不会用到StringBuilder。但如果str是变量,这个优化就不适用。
  2. JVM的即时编译器(JIT)会对频繁调用的代码进行内联、缓存等优化,append(char)和append(String)的细微差异会被进一步抹平。

实际开发建议

除非你在编写极端高频的循环代码(比如每秒执行数百万次拼接),否则完全不需要纠结这两者的性能差异。代码的可读性和语义清晰度更重要:如果要拼接的是单个字符,用str + 'c'更直观;如果是字符串常量,用str + "c"也完全没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:04:54