1

我看到了这个问题和一些类似的问题,我认为它不是重复的:

Java 中 toString() 中的 StringBuilder 与字符串连接

这是交易,我今天早上听到我的一位非常聪明的工作同事谈论 java 如何优化最多 8 或 16 个字符串连接(我现在不确定)到字符串生成器。因为这可能是对我的意思的模糊描述,这里是 6 个字符串连接的示例:

public String test(){
     return "a" + "b" + "c" + "d" + "e" + "f";
}

所以这实际上被翻译成:

public String test(){
     StringBuilder sb = new StringBuilder();
     return sb.append("a").append("b").append("c").append("d").append("e").append("f").toString();
}

我不得不提前离开对话,这是真的吗?如果是,有人可以提供更多详细信息,直到此优化完成 8/16 或 x?

在我听说之前我并不知道这件事。很高兴知道是否属实。

4

2 回答 2

3

根据要求,在这里我的评论是对问题的回答:

您可以在这篇博客文章中找到关于字符串连接如何在 Java 中工作的详尽解释:http: //znetdevelopment.com/blogs/2009/04/06/java-string-concatenation

于 2012-05-07T13:26:56.737 回答
1

我不知道确切的数字,但通常你不应该担心用+运算符连接字符串,除非连接发生在某个循环的迭代中,因为这是编译器无法优化并且你需要StringBuilder显式使用的情况,甚至String.concat

哪种方式最快还取决于您的数据是恒定的还是可变的。在您的示例中,字符串将在编译时连接到"abcdef".

于 2012-05-07T11:30:38.290 回答