【问题标题】:String versus StringBuilderString 与 StringBuilder
【发布时间】:2020-06-01 16:53:37
【问题描述】:

我需要修改输入字符串以返回一些输出。基本上,当我看到一个特定的字符串时,我需要删除它。我正在考虑是否使用 StringBuilder 与 String。在我看来,String 会简单得多。

假设:

StringBuilder input = new StringBuilder(inputs)
if(inputs.contains("someword)"")) {
     // remove it by inputs = inputs.replace("someword", "");
}

使用StringBuilder input = new StringBuilder(inputs)并删除特定字符串更好还是使用原始inputs = inputs.replace(...).更好

我认为使用StringBuilder 会很麻烦。 StringBuilder 用于连接,但我没有连接字符串。

【问题讨论】:

  • 如果您不“构建字符串”,为什么还需要使用 StringBuilder?内部替换代码基本相同
  • @GiorgiTsiklauri 这是一个 C# 问题。使用 C# 问题作为 Java 问题的重复目标并不合适。
  • 意外参考,但思路大同小异。
  • inputs 复数与 input 单数到底是什么关系。您的问题不清楚。

标签: java string stringbuilder


【解决方案1】:

过去,当您对 String 应用多项修改时,StringBuilder 的速度大多数时候都比 String 快。

但从 JDK 6 开始,编译器本身通常会自动将 String 替换为 StringBuilder(包括所有相关行),这可能会提高性能。这通过使用反编译器变得可见。所以在大多数情况下,您不会注意到任何差异。

如果你对结构复杂的字符串应用多个操作而不是简单的一批命令,那么使用StringBuilder仍然比自动编译器优化更好。

【讨论】:

  • 这并没有解决问题的具体场景。
  • 马克,你能说得更具体点吗?
  • 您只是在描述用于连接的字符串与字符串构建器的通用用例的性能(例如在循环中),但 OP 询问是否在 StringBuilder 与 @987654329 上使用 replace @.
  • 不,我写了“修改”和“多次操作”,我是认真的。
猜你喜欢
  • 1970-01-01
  • 2011-06-25
  • 2022-06-10
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
相关资源
最近更新 更多