Різниця між String StringBuffer і StringBuilder на Java

Ключова різниця - рядок vs StringBuffer проти StringBuilder на Java
 

String, StringBuffer і String Builder - це класи на Java. Рядок широко використовується в програмуванні Java. Після створення об’єкта String неможливо змінити їх. Кожного разу, коли в String відбувається зміна, вона створює нову String. Навіть якщо це з'єднання з існуючою рядком, вона створює нову струну. Це спричинює втрату пам'яті. Класи StringBuffer і StringBuilder на Java використовуються для зміни String. The ключова різниця між String, StringBuffer і StringBuilder на Java - це те, що String - це клас для створення об'єкта типу String, який є послідовністю символів, StringBuffer - це клас, який використовується для зміни рядків, що забезпечують безпеку потоку, а StringBuilder - клас, який використовується для модифікації рядків, які не забезпечують безпеку потоку.

ЗМІСТ

1. Огляд та ключові відмінності
2. Що таке струна в Java
3. Що таке StringBuffer в Java
4. Що таке StringBuilder в Java
5. Подібність між String StringBuffer і StringBuilder на Java
6. Порівняльне порівняння - String vs StringBuffer vs StringBuilder на Java у табличній формі
7. Підсумок

Що таке струна в Java?

Клас струн знаходиться в пакеті java.lang. Кожен раз, коли програміст створює String, він є об'єктом типу String. Струни мають незмінне значення, коли об'єкт створений, його неможливо змінити. Об'єкти, створені за допомогою класів обгортки, такі як Integer, Byte, Float, Double, також незмінні. Рядковий літерал укладається у подвійні лапки. напр. "Привіт Світ". Кожного разу, коли створюється літеральний рядок, віртуальна машина Java (JVM) перевіряє контент постійного пулу. Якщо String існує, повертається посилання на постійний пул String. Якщо це новий String, цей об'єкт створюється в пулі постійних String.

Рисунок 01: Програма Java за допомогою String, StringBuffer і StringBuilder

Перегляньте фрагмент коду нижче.

Рядок s1 = “Привіт”;

s1 = s1 + "Світ";

System.out.println (s1);

У першому твердженні s1 посилається на "Привіт" у пулі постійних рядків. У другому твердженні JVM не змінює існуючий рядок. Натомість він створює нову рядок як "Hello World", а s1 тепер посилається на цю нову рядок. Вихідний об’єкт “Hello” все ще існує в постійному пулі String.

Якщо є код, який є,

Рядок s1 = “Привіт”;

Рядок s2 = s1;

s1, s2 обидва будуть посилатися на об'єкт String "Привіт".

Що таке StringBuffer в Java?

Клас StringBuffer використовується для того, щоб об'єкти String змінювалися. Тому ці об'єкти можуть бути модифіковані. StringBuffer визначає чотири конструктори. StringBuffer (), StringBuffer (розмір int), StringBuffer (String str), StringBuffer (charSequence [] ch)

Перегляньте код нижче,

StringBuffer s1 = новий StringBuffer ("Привіт");

s1.append ("Світ");

System.out.println (s1);

У твердженні 1 s1 посилається на об'єкт "Hello" в купі. Об'єкт є змінним, оскільки він створений за допомогою StringBuffer. У викладі 2 "Світ" додається до того ж об'єкта "Привіт".

Строкові об'єкти, створені класом StringBuffer, можуть економити пам'ять. StringBuffer забезпечує безпеку потоку, оскільки два потоки не можуть одночасно отримати доступ до одного методу в класі StringBuffer. Зниження безпеки нитки. Клас StringBuffer містить такі методи, як append (), insert (), reverse (), substitute ().

Що таке StringBuilder в Java?

Клас StringBuilder використовується для того, щоб об'єкти String змінювалися. Тому ці об'єкти можуть бути модифіковані. Функціональність схожа на StringBuffer, але це не забезпечує безпеку ниток. StringBuilder має такі конструктори, як StringBuilder (), StringBuilder (int size), StringBuilder (String str).

Перегляньте наведений нижче код.

StringBuilder s1 = новий StringBuilder ("Привіт");

s1.append ("Світ");

System.out.println (s1);

У твердженні 1 s1 посилається на об'єкт "Hello" в купі. Об'єкт є змінним, оскільки він створений за допомогою StringBuilder. У викладі 2 "Світ" додається до того ж об'єкта "Привіт". Не існує створення абсолютно нового об'єкта String.

Строкові об'єкти, створені класом StringBuilder, можуть економити пам'ять. На відміну від StringBuffer, StringBuilder не забезпечує безпеку потоку, оскільки два потоки можуть одночасно отримувати доступ до одного методу в класі StringBuilder. Клас StringBuilder містить такі методи, як append (), insert (), reverse (), substitute ().

Яка схожість між String, StringBuffer та StringBuilder на Java?

  • Все можна використовувати для створення рядків.

Яка різниця між String StringBuffer і StringBuilder на Java?

String vs StringBuffer vs StringBuilder

Рядок Рядок - це клас Java, який використовується для створення об'єкта типу String, який є послідовністю символів.
StringBuffer StringBuffer - це клас Java, який використовується для створення об'єктів String, які можна модифікувати за допомогою безпеки потоку.
StringBuilder StringBuilder - це клас, який використовується для створення рядкових об'єктів, які можна змінювати без безпеки потоку.
Змінюваність
Рядок Рядок є незмінним класом.
StringBuffer StringBuffer - клас, що змінюється.
StringBuilder StringBuilder - це клас, що змінюється.
Безпека нитки
Рядок Методи String є безпечними для ниток.
StringBuffer Методи StringBuffer безпечні для потоків та синхронізовані.
StringBuilder Методи StringBuilder не є потоковими і не синхронізовані.
Продуктивність
Рядок Рядок швидкий.
StringBuffer StringBuffer повільний.
StringBuilder StringBuilder швидко.

Підсумок - Рядок vs StringBuffer проти StringBuilder на Java 

String, StringBuffer і StringBuilder здаються однаковими, але вони мають різні значення. Все це - класи Java. Різниця між String, StringBuffer і StringBuilder в Java полягає в тому, що String - це клас для створення об'єкта типу String, який є набором символів, StringBuffer - це клас, який використовується для модифікації рядків та забезпечення безпеки потоку, тоді як StringBuilder - це клас, який використовується для модифікації рядків, що не забезпечує безпеку потоку.

Завантажте PDF-файл String vs StringBuffer vs StringBuilder на Java

Ви можете завантажити PDF-версію цієї статті та використовувати її в офлайн-цілях відповідно до примітки. Завантажте версію PDF тут. Різниця між String StringBuffer і StringBuilder на Java

Довідка:

1. "String vs StringBuffer vs StringBuilder." JournalDev, 30 липня 2017. Доступно тут
2. "Голодна Java". Різниця між класами String, StringBuilder та StringBuffer з прикладом: Java | Ява Голодний. Доступний тут 
3.tutorialspoint.com. «Струни Java». Точка. Доступний тут