gpt4 book ai didi

java - 字符串连接是否经过优化以使用现有的 StringBuilders?

转载 作者:IT老高 更新时间:2023-10-28 20:40:38 26 4
gpt4 key购买 nike

我有以下代码:

StringBuilder str = new StringBuilder("foo");
for(Field f : fields){
str.append("|" + f);
}
str.append("|" + bar);
String result = str.toString();

我知道编译器会优化字符串连接 "|"+ f 并将其替换为 StringBuilder。然而,在 Java 8 中会创建一个新的 StringBuilder 还是使用现有的 str ? Java 9 怎么样?

最佳答案

默认情况下在 java-9 中不会有 StringBuilder用于字符串连接;它是如何通过 invokedynamic 做出的决定是运行时决定的。 .而默认策略不是 StringBuilder::append一个。

您还可以阅读更多 here .

在 java-8 下将创建一个新的(很容易在反编译的字节码中发现两次 invokespecial // Method java/lang/StringBuilder."<init>":()V

另外,你有一个关于 append.append... 的建议;请注意,这比 sb.append ... sb.append 要好得多, 和 here这就是为什么。

关于java - 字符串连接是否经过优化以使用现有的 StringBuilders?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com