java - Java中是否有 "fastest way"来构造String?

标签 java string

我通常按以下方式在 Java 中创建一个字符串:

String foo = "123456";

但是,我的讲师坚持要我使用 format 方法形成一个字符串,如下所示:

String foo = String.format("%s", 123456);

要快得多。

此外,他说使用 StringBuilder 类甚至更快。

StringBuilder sb = new StringBuilder();
String foo = sb.append(String.format("%s", 123456)).toString();



如果有的话,哪种创建字符串的方法最快?

它们不可能 100% 准确,因为我可能没有完全记住它们。

最佳答案

如果只有一个字符串则:

String foo = "123456";

最快。您会注意到 String.format 行中声明了 "%s%",所以我不明白讲师怎么可能认为这样更快。另外,您还有一个方法调用。

但是,如果您要随着时间的推移构建字符串,例如在 for 循环中,那么您需要使用 StringBuilder。如果您只使用 +=,那么每次调用 += 行时,您都会构建一个全新的字符串。 StringBuilder 快得多,因为它保存一个缓冲区并在您每次调用 append 时附加到该缓冲区。

关于java - Java中是否有 "fastest way"来构造String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842024/

相关文章:

java - 如何在 java 中使用 FTPClient 对象检索多个文件?

java - 如何从 Java 中的 ArrayList 中删除除第一个元素之外的所有内容

java - 直接从 ByteBuffer 到 String 但没有中间 byte[]?

c# - 以正确的方式在 C# 中解析字符串

python - 使用 u' 和 Decimal 值解码字符串中的 Python json

python - 在 Pandas DataFrame 中查找和计算字符串值

java - 如何在 JavaFX 折线图上添加形状

Java 正则表达式捕获任何 (.*) 与 DOTALL 忽略零宽度正先行

python - 如何使用 Python 格式化带有三重引号的多行字符串?

C char 数组 v C char* 初始化