Для конкатенации строк один раз старый надежный "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).
Есть также статический format
*Метод 1034 *, который не требует создания объекта MessageFormat
.
Все такие библиотеки будут сводиться к конкатенации строк на самом базовом уровне, поэтому не будет большой разницы в производительности от одного к другому.