Рубрики
Без рубрики

Объединение строк в Java

Объединение строк в Java является обычной операцией. Мы должны использовать метод StringBuilder или StringBuffer append() для объединения строк. Избегайте оператора+.

Автор оригинала: Pankaj Kumar.

Объединение строк – очень распространенная операция в программировании. В этом уроке мы изучим различные способы объединения строк в Java.

Объединение строк в Java

Мы должны избегать использования оператора “+” для объединения строк. Мы должны использовать StringBuffer или StringBuilder для объединения строк.

Объединение строк с помощью оператора +

String внутренне использует StringBuffer (до Java 1.4) или StringBuilder (Java 1.5 и далее) для вызовов операторов строки”+”.

Давайте напишем простую java-программу для объединения строк, чтобы доказать это.

package com.journaldev.string.concatenation;

public class StringConcatenationExample {

	public static void main(String args[]){
		String str = new String ("Journal  ");
		str += "Dev!!";
	}

}

Теперь мы отредактируем ту же программу, чтобы использовать StringBuffer.

package com.journaldev.string.concatenation;

public class StringConcatenationExample {

	public static void main(String args[]){
	     StringBuffer str = new StringBuffer ("Journalbytecode");
	     str.append("Dev!!");
	}

}

Я оставил в стороне байт-код для обеих этих программ, так как вы можете видеть, что единственная разница между обеими этими программами находится в строках № 6 и 7. Давайте теперь проверим байт-код.

Байтовый код Объединения Строк

˛∫æ2.com/journaldev/string/concatenation/StringConcatenationExamplejava/lang/Object()VCode
	LineNumberTableLocalVariableTablethisLcom/journaldev/string/concatenation/StringConcatenationExample;main([Ljava/lang/String;)Vjava/lang/String	Journal
(Ljava/lang/String;)Vjava/lang/StringBuilder
valueOf&(Ljava/lang/Object;)Ljava/lang/String;
Dev!!
!"#append-(Ljava/lang/String;)Ljava/lang/StringBuilder;
%&'toString()Ljava/lang/String;args[Ljava/lang/String;strLjava/lang/String;
SourceFileTTT.java!/*∑±

	[ªY∑LªY+∏∑∂ ∂$L±

()
*+,-

Строковый буферизатор добавляет байтовый код

˛∫æ2#com/journaldev/string/concatenation/StringConcatenationExamplejava/lang/Object()VCode
	LineNumberTableLocalVariableTablethisLcom/journaldev/string/concatenation/StringConcatenationExample;main([Ljava/lang/String;)Vjava/lang/StringBufferJournal
(Ljava/lang/String;)VDev!!
append,(Ljava/lang/String;)Ljava/lang/StringBuffer;args[Ljava/lang/String;strLjava/lang/StringBuffer;
SourceFileTTT.java!/*∑±

	NªY∑L+∂W±


 !"

Из байтового кода ясно, что String + использует метод добавления StringBuilder для объединения строк.

Вот шаги, связанные с объединением строк с помощью оператора+.

  1. Создается новый объект StringBuilder.
  2. Строка “Журнал” копируется во вновь созданный объект StringBuilder.
  3. Метод StringBuilder append() вызывается для добавления “Dev !!” к объекту StringBuilder.
  4. Метод StringBuilder toString() вызывается для получения строкового объекта.
  5. Новая ссылка на строковый объект присваивается str и возвращается. Более старая строка “Журнал” теперь доступна для сбора мусора.

Метод StringBuilder и StringBuffer append()

Для объединения нескольких строк лучше использовать метод StringBuilder и StringBuffer append (). Эти служебные классы предоставляются для того, чтобы помочь вам в обычных строковых операциях.

  1. Создается новый объект StringBuffer со значением “Журнал “
  2. Метод append() вызывается для добавления “Dev !!” к объекту.
  3. Метод StringBuffer toString() вызывается для получения строкового объекта.

Вывод

Если вам нужно объединить несколько строк, можно использовать оператор+, потому что не будет никакой видимой задержки производительности. Но, если вы объединяете много строк, используйте метод StringBuilder append (). Если вы находитесь в многопоточной среде, используйте класс StringBuffer.

Ссылка: Документы String API