我看到了这个问题和一些相似之处,我认为这不是重复的:
StringBuilder vs String concatenation in toString() in Java
这是交易,我听到一位非常聪明的工作同事今天早上谈到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?
在我听到之前我并不知道这件事。很高兴知道是否属实。
答案 0 :(得分:3)
根据要求,这里我的评论是对问题的回答:
您可以在此博客文章中找到有关字符串连接如何在Java中工作的详尽说明:http://znetdevelopment.com/blogs/2009/04/06/java-string-concatenation
答案 1 :(得分:1)
我不知道确切的数字,但通常你不应该担心用+
运算符连接字符串,除非连接在某个循环的迭代中发生,因为这是编译器的情况无法优化,您需要明确使用StringBuilder
,甚至String.concat
。
哪种方式最快取决于您的数据是恒定的还是可变的。在您的示例中,字符串将在编译时连接到"abcdef"
。