字符串与字符串生成器。哪个更快?如果是 stringbuilder 那么为什么要使用 string

String vs String builder. which is faster? If stringbuilder then why use string

我对字符串和更快的字符串生成器感到困惑,我知道字符串生成器在串联操作中比字符串更快。但是,如果我不想使用串联操作怎么办。如果 stringbuilder 更快,为什么我们主要使用 string。

String的优点是不可变:一旦构造,字符串实例的内容就不能再改变。这意味着您通过引用传递字符串而无需一直进行复制。

例如,假设您将 StringBuilder 传递给 class。然后你可以在之后更改StringBuilder的内容,并混淆class。因此 class 需要复制一份以确保内容不会在它不知情的情况下发生更改。对于 String 这不是必需的,因为 String 是不可变的。

现在,当您在构建字符串的过程中时,这种不变性实际上是一个问题,因为必须为每个连接创建一个新的 String 实例。这就是 StringBuilder class 存在的原因:它是一个辅助 class ,旨在构建字符串(因此得名)。

在实践中,通常没有必要显式使用 StringBuilder。 Java 编译器会在您编写 String result = "some constant" + a + b; 之类的内容时自动为您使用 StringBuilder。只有复杂的构建逻辑(例如,使用 iffor 块)你需要自己做。