Разлика между StringBuffer и StringBuilder

StringBuffer срещу StringBuilder

Java е много популярен обектно ориентиран език. В Java класът String е предвиден да побере последователност от символи, която не може да бъде променена (веднъж инициализирана). Алтернативно, езикът за програмиране на Java осигурява два типа изменяеми последователности от знаци. Тоест, когато програмистите трябва да модифицират определен String (след инициализация), те трябва да използват клас StringBuffer или клас StringBuilder, вместо клас String. StringBuffer беше представен в JDK 1.0, а клас StringBuilder беше въведен в JDK 1.5, всъщност като заместител на клас StringBuffer (за среда с една нишка).

Какво е StringBuffer?

Класът StringBuffer беше представен в JDK 1.0. Класът StringBuffer принадлежи към пакета java.lang и се наследява от родовия java.lang.object. Програмистите не могат да го разширят допълнително, тъй като това е последен клас. Класът StringBuffer реализира интерфейси за сериализируем, придаваем и CharSequience. Обект от клас StringBuffer може да побере последователност от символи, която може да се променя и да не е безопасна за конци. Това означава, че е много подобен на String обект, но последователността на символите (дължина и съдържание) може да бъде променена по всяко време след инициализиране на StringBuffer обекта. Това обаче трябва да стане с помощта на специфичните методи, предоставени от клас StringBuffer. В клас StringBuffer има две принципни операции. Те се предоставят чрез методите на добавяне () и вмъкване (). Тези методи са претоварени, така че те са в състояние да приемат данни от всякакъв тип, като цяло и дълго. И двата метода първо преобразуват всеки вход в низ и след това добавят (добавя или вмъква) символите на съответния низ към съществуващия обект Stribbuffer. Методът append () добавя преобразувания низ в края на съществуващия обект StringBuffer, докато методът insert () ще добави символите за въвеждане в зададената точка на вмъкване.

Какво е StringBuilder?

Класът StringBuilder беше представен в JDK 1.5. StringBuilder API е много подобен на StringBuffer API. Всъщност класът StringBuilder всъщност беше представен като заместител на класа StringBuffer (за приложения с една нишка). Класът StringBuilder принадлежи към пакета java.lang и се наследява от родовия java.lang.object. Това е последен клас и затова програмистите не могат да го разширят. Класът StringBuilder реализира интерфейси за сериализиране, придаване и CharSequience. Обект от клас StringBuilder може да съдържа последователност от символи, която е изменяема, но не е безопасна за конци. Това означава, че е много подобен на String обект, но низът може да бъде променен по всяко време. Но класът StringBuilder не осигурява синхронизация и следователно се твърди, че е по-бърз от използването на клас StringBuffer. Класът StringBuilder предоставя методите за добавяне () и вмъкване () с точно подобна функционалност като в клас StringBuffer.

Каква е разликата между StringBuffer и StringBuilder?

Въпреки че класовете StringBuilder и StringBuffer могат да се използват за подменящи се поредици от знаци в Java, те имат ключова разлика. За разлика от клас StringBuffer, класът StringBuilder не е защитен с нишки и не осигурява синхронизация. Ето защо се препоръчва клас StringBuilder да се използва вместо клас StringBuffer в едноредови приложения, тъй като се твърди, че класът StringBuilder ще бъде много по-бърз от клас StringBuffer (при нормални обстоятелства).