对于一次串联字符串,旧的可靠是完全可以的(它实际上由编译器转换为)。"str" + param + "other str"
StringBuilder
StringBuilders主要有用,如果你必须继续向字符串添加内容,但你不能把它们全部放入一个语句中。例如,取一个 for 循环:
String str = "";
for (int i = 0; i < 1000000; i++) {
str += i + " "; // ignoring the last-iteration problem
}
这将比等效的StringBuilder版本运行得慢得多:
StringBuilder sb = new StringBuilder(); // for extra speed, define the size
for (int i = 0; i < 1000000; i++) {
sb.append(i).append(" ");
}
String str = sb.toString();
但这两者在功能上是等效的:
String str = var1 + " " + var2;
String str2 = new StringBuilder().append(var1).append(" ").append(var2).toString();
说了这么多,我的实际答案是:
看看java.text.MessageFormat
。来自 Javadocs 的示例代码:
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {new Long(fileCount), diskName};
MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
输出:
The disk "MyDisk" contains 1,273 file(s).
还有一个静态格式
方法,不需要创建对象。MessageFormat
所有这些库都将归结为最基本级别的字符串串联,因此彼此之间不会有太大的性能差异。