追加,使用“+”,字符串与字符

Appending, using '+', a String vs a char

每当我尝试使用 IntelliJ IDEA 生成 toString() 方法时,我都会看到

return ... +
        ", some='" + '\'' + // some is an String field
        '}';

相对于以下签名,它是否有显着的性能提升?

return ... +
        ", some='" + "'" +
        "}";

还是它只是一个模板,没有任何意义?

连接 charString 的性能可能存在细微差别。

  • char 的情况下,串联很可能只是将 char 附加到 StringBuilder.

  • String 的情况下,天真的实现将需要一个循环来复制 String 中的所有字符。此外,还有一个额外的间接级别,可能是两个 null 检查,以及在访问字符串的字符(或字节)数组时可能的数组边界检查。

然而

  1. 虽然性能差异(如果您测量的话)在该 toString() 方法的微基准测试中可能很显着,但通常在实际应用程序的上下文中将变得微不足道。

    一般来说,程序员花时间关注这种细节级别的性能是不值得的。重要的性能问题可能出现在其他领域。一个好的策略是使用基准、配置文件、优化方法……一旦您拥有功能完整且通过测试的代码。

  2. 计划引入 JIT“智能”来优化字符串连接序列;参见 https://openjdk.java.net/jeps/280

    我不确定这个特殊情况是否在最新的 Java JIT 编译器中得到了优化(还)。不过明明卡上会加上优化。