哪种字符串连接技术在Java中更好?

-2 java string performance

可能重复:
String中的StringBuilder与字符串串联在toString()中

在我的代码中,我使用如下所示的字符串连接.我正在进行代码审查,所以我需要进行性能检查.请任何人建议哪一个更好用.

quoteTreeMap.put(index + CommonUtil.QUOTE_TREE_DOT + fundIndex + CommonUtil.QUOTE_TREE_DOT + lastIndex,buffer.toString());
Run Code Online (Sandbox Code Playgroud)

所以我们反复使用它

index + CommonUtil.QUOTE_TREE_DOT + fundIndex + CommonUtil.QUOTE_TREE_DOT + lastIndex
Run Code Online (Sandbox Code Playgroud)

只有lastIndex这个值会改变,剩下的就是所有人都一样.

如何编写代码以提供更好的性能?我能宣布吗?

index + CommonUtil.QUOTE_TREE_DOT + fundIndex + CommonUtil.QUOTE_TREE_DOT
Run Code Online (Sandbox Code Playgroud)

这就像顶部一样

String one=""index + CommonUtil.QUOTE_TREE_DOT + fundIndex + CommonUtil.QUOTE_TREE_DOT"
Run Code Online (Sandbox Code Playgroud)

我可以用它one+lastIndex吗?
对于ref:

StringBuffer buffer = new StringBuffer();
buffer.append(CommonUtil.QUOTE_TREE_GROSS_PREM);
buffer.append(CommonUtil.QUOTE_TREE_SPACE);
buffer.append(CommonUtil.QUOTE_TREE_EQUALS);
buffer.append(CommonUtil.QUOTE_TREE_SPACE);
buffer.append(chcCalBreakDownObj.getPremium().getGrossPrem());
quoteTreeMap.put(index + CommonUtil.QUOTE_TREE_DOT + fundIndex + CommonUtil.QUOTE_TREE_DOT + lastIndex, buffer.toString());
lastIndex++;
clearBuffer(buffer);
Run Code Online (Sandbox Code Playgroud)

我正在进行代码审查,所以我需要进行性能检查.请任何人建议哪一个更好用.

Ada*_*old 7

你应该使用StringBuilder它,因为它不涉及String每次你向它添加东西时创建一个新的.

使用+运算符连接两个Strings创建一个新String对象.

请记住,StringBuilder和之间的主要区别StringBuffer是后者是同步的,因此通常比前者慢.

如果您有兴趣,请查看官方文档.

  • 我很确定Java在内部使用StringBuilder或StringBuffer来进行连接,不是吗? (4认同)
  • 我认为这不是一个好建议.在三个主要的替代品(`String`,`StringBuilder`和`StringBuffer`)中,后者可能是最不合适的.此外,第二段通常不正确. (3认同)