StringBuilder

StringBuilder е клас, който служи за построяване и промяна на символни низове. Той преодолява проблемите с бързодействието, които възникват при конкатениране на низове от тип String. Класът е изграден под формата на масив от символи и това. Информацията в него не е неизменима – промените, които се налагат в променливите от тип StringBuilder, се извършват в една и съща област от паметта (буфер), което спестява време и ресурси. За промяната на съдържанието не се създава нов обект, а просто се променя текущият.

StringBuilder sb = new StringBuilder(15);
sb.append("Hello, World! ");
sb.append("It’s a great day!");
  • capacity() – връща размера на целия буфер (общия брой заети и свободни символи)
  • length() – връща дължината на записания низ в променливата
  • charAt(int index) – връща символа на указаната позиция
  • append(…) – слепва низ, число или друга стойност след последния записан символ в буфера
  • delete(int start, int end) – премахва низ по зададена начална и крайна позиция
  • insert(int offset, String str) – вмъква даден стринг на дадена позиция
  • replace(int start, int end, String str) – замества записания низ между началната и крайната позиция със стойността на променливата str
  • toString() – връща записаната информация в обекта на StringBuilder като резултат от тип String, който можем да запишем в променлива на String.

StringBuffer

StringBuffer в Java е клас, представляващ mutable (модифицируем) символен низ. Този клас е част от Java Standard Edition и предоставя възможност за манипулиране на символни низове посредством различни операции като добавяне на символи, вмъкване, изтриване и други.

Сравнение със StringBuilder:

  • Mutable vs Immutable:

StringBuffer е част от Java Standard Edition и е mutable (модифицируем). Това означава, че можете да променяте съдържанието му, след като е създаден. StringBuilder също е mutable и представлява по-нова версия на StringBuffer. Въведен е в Java 5 и е предпочитан в съвременни приложения поради някои оптимизации и подобрения.

  • Thread safety:

StringBuffer е потокобезопасен, което означава, че е подходящ за използване в многонишкови приложения, тъй като методите му са синхронизирани. StringBuilder не е синхронизиран, затова е по-бърз, но трябва да се използва с предпазливост в многонишкови среди.

  • Производителност:

Поради синхронизацията си, StringBuffer може да бъде по-бавен от StringBuilder, особено в немногонишкови приложения, където няма нужда от синхронизация.

  • Методи:

И двата класа предоставят подобни методи за манипулиране на символни низове, като append(), insert(), delete(), и други. Синтаксисът и работата на тези методи са сходни между двата класа.

  • Използване:

Ако работите в многонишкова среда и имате нужда от потокобезопасност, може да използвате StringBuffer. Ако не е необходима потокобезопасност, StringBuilder обикновено е предпочитан, тъй като е по-бърз.