Конкатенация строк с использованием оператора concat (+) или метода String.format () - PullRequest
7 голосов
/ 14 декабря 2011

Какой из них будет лучше использовать для конкатенации строк

Если я хочу построить строку из набора строковых переменных, таких как str1 и str2, какой из них будет лучше ???

  1. Оператор строки Concat

String str="This the String1 " + str1 + " merged with Sting2 " + str2;

  1. Метод форматирования строки

String str=String.format("This the String1 %s merged with Sting2 %s", str1 , str2);

То, что я считаю вторым, будет лучше, потому что первое пострадает от создания большого количества струн.

поправьте меня, если я не прав? и оставить отзыв о том же

Ответы [ 4 ]

9 голосов
/ 14 декабря 2011

Первый фактически не создает никаких дополнительных строк.Он будет скомпилирован во что-то вроде:

String str = new StringBuilder("This the String1 ")
    .append(str1)
    .append(" merged with Sting2 ")
    .append(str2)
    .toString();

Учитывая, что вторая форма требует синтаксического анализа строки формата, я не удивлюсь, если первая действительно будет работать быстрее.1006 * Однако , если у вас нет тестов, доказывающих, что это действительно немного кода, который выполняется слишком медленно для вас, вы не должны слишком беспокоиться об эффективности.Вы должны больше беспокоиться о читабельности.Какой код вы считаете более читабельным?

3 голосов
/ 14 декабря 2011

Первый не пострадает от создания Струн.Поскольку все статично, создается один StringBuilder, все части добавляются, а затем вызывается toString.Он будет немного более эффективным, чем второй, который должен анализировать строку формата.Но, вероятно, это не то, где вы потеряете или получите большую производительность.

Конкатенация строк создает много временных объектов, когда вы делаете это в цикле:

 for (String elem : someList) {
     s += elem;
 }

Это создастStringBuilder и объект String на каждой итерации.

1 голос
/ 14 декабря 2011

Это зависит от количества строк, которые вы объединяете. До 5 (иш) это, вероятно, не будет иметь значения.

Измерьте для ваших конкретных обстоятельств, если вам действительно нужна эта оптимизация.

0 голосов
/ 14 декабря 2011
...