StringBuffer vs StringBuilder
Java - дуже популярна об'єктно-орієнтована мова. У Java клас String надається для вміщення послідовності символів, яку неможливо змінити (після ініціалізації). Крім того, мова програмування Java забезпечує два типи змінних послідовностей символів. Тобто, коли програмістам потрібно змінити певний рядок (після ініціалізації), вони повинні використовувати клас StringBuffer або клас StringBuilder замість класу String. StringBuffer був представлений в JDK 1.0, а клас StringBuilder був введений в JDK 1.5, фактично як заміна класу StringBuffer (для однопотокових середовищ).
Що таке StringBuffer?
Клас StringBuffer був представлений в JDK 1.0. Клас StringBuffer належить до пакету java.lang і успадковується від загального java.lang.object. Програмісти не можуть продовжити його далі, оскільки це заключний клас. Клас StringBuffer реалізує інтерфейси Serializable, Appendable та 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 реалізує інтерфейси Serializable, Appendable та CharSequience. Об'єкт класу StringBuilder може містити послідовність символів, яка може змінюватися, але не є безпечною для потоків. Це означає, що він дуже схожий на об'єкт String, але рядок можна змінити в будь-який час. Але клас StringBuilder не забезпечує синхронізацію, а тому вважається швидшим, ніж використання класу StringBuffer. Клас StringBuilder забезпечує методи додавання () та вставки () з точно такою ж функціональністю, як і в класі StringBuffer.
Яка різниця між StringBuffer і StringBuilder?
Хоча класи StringBuilder та StringBuffer можна використовувати для змінних послідовностей символів на Java, вони мають ключову різницю. На відміну від класу StringBuffer, клас StringBuilder не є безпечним для потоків і не забезпечує синхронізації. Тому рекомендується використовувати клас StringBuilder замість класу StringBuffer в однопотокових програмах, оскільки стверджується, що клас StringBuilder буде набагато швидшим, ніж клас StringBuffer (за звичайних обставин).