我想知道如果程序员在 Stringbuilderappend() 语句中连接,或者只使用两个 append 语句而不是一个,执行速度会发生变化。
我问这个问题是为了帮助我弄清楚为什么我们可以连接时使用 StringBuilder 类。
串联示例:
public class MCVE {
public static void main(String[] args) {
String[] myArray = {"Some", "stuff", "to", "append", "using", "the",
"StringBuilder", "class's", "append()", "method"};
StringBuilder stringBuild = new StringBuilder();
for(String s: myArray) {
stringBuild.append(s + " ");
}
}
}
Double-Append() 示例:
public class MCVE {
public static void main(String[] args) {
String[] myArray = {"Some", "stuff", "to", "append", "using", "the",
"StringBuilder", "class's", "append()", "method"};
StringBuilder stringBuild = new StringBuilder();
for(String s: myArray) {
stringBuild.append(s);
stringBuild.append(" ");
}
}
}
最佳答案
理论上,是的,串联版本会花费更长的时间,因为它在幕后创建了一个全新的 StringBuilder
, append s
, append ""
,然后使用 toString
创建(!)一个字符串,以将其传递给您编码的 append
。 (这就是编译器的作用。要了解您的具体情况,您需要测试代表实际代码的 a benchmark。毕竟,如果它是运行时的热点,JIT 就会介入.)
当然,你可能不会注意到。但是,如果您已经在使用 StringBuilder
,请使用它(通过执行 append
两次来代替)。 :-)
(如果上面的第一段都是字符串文字,则它们不会为真,例如 "foo"+ "bar"
。编译器会执行该连接。)
关于java - 在 StringBuilderappend() 语句中连接所花费的执行时间是否与使用两个append() 语句不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997801/