
Діаграма порівняння
Основа для порівняння | Рядок | StringBuffer |
---|---|---|
Основний | Довжину об'єкта String виправлено. | Довжина StringBuffer може бути збільшена. |
Модифікація | Строковий об'єкт є незмінним. | Об'єкт StringBuffer змінюється. |
Продуктивність | Це повільніше під час конкатенації. | Це швидше під час конкатенації. |
Пам'ять | Споживає більше пам'яті. | Витрачає менше пам'яті. |
Зберігання | Рядок постійний пул. | Пам'ять купи. |
Визначення рядка
“String” - це клас на Java. Об'єкт класу String має фіксовану довжину, і найбільш важливо пам'ятати, що об'єкт класу String є «незмінним». Як тільки ви ініціалізуєте об'єкт String, ви не зможете знову змінити цей об'єкт. Об'єкт класу String зберігається в константному пулі String.
Давайте спочатку зрозуміємо, що всякий раз, коли ви створюєте будь-який рядок; Ви створюєте об'єкт типу string. Строкові константи також є рядковими об'єктами.
System.out.println ("Привіт це рішення Teckpix");
У наведеній вище операції рядок "Hello this is Teckpix Solution" - це константа String.
Тепер зрозуміємо змінність об'єкта String за допомогою прикладу.
String str = new String ("Teckpix"); str.concat ("Рішення"); system.out.println (str); // виведення Teckpix
У наведеному вище коді я спробував об'єднати два рядки "Teckpix" і "Solution". Як ми знаємо, коли створюється рядок, що означає, що об'єкт типу String створюється. Отже, рядок «Teckpix» створює об'єкт, посилання якого присвоєно строковому об'єкту «str». Далі, я спробував об'єднати інший рядок "Рішення" з рядком "Teckpix", використовуючи метод "concat ()" класу String.

Визначення StringBuffer
Клас «StringBuffer» - це клас класу «String». Клас StringBuffer забезпечує більшу функціональність рядків. Об'єкт класу StringBuffer є змінюваним, тобто його об'єкт може бути змінений. Довжина об'єкта StringBuffer росте. Ви можете вставити символи або підрядки в середині літералу рядка, призначеного для об'єкта StringBuffer або в кінці його. StringBuffer виділяє простір для 16 додаткових символів, коли не запитується конкретна довжина.
Давайте зрозуміти змінність об'єкта StringBuffer за допомогою прикладу:

StringBuffre Sb = новий StringBuffer ("Teckpix"); Sb.append ("Рішення"); system.out.println (Sb); // Вихід Teckpix Solution
Як відомо, об'єкт StringBuffer є змінюваним. Метод append () модифікує об'єкт StringBuffer Sb, до якого спочатку призначається посилання на об'єкт ”Teckpix”. Метод append () додає новий строковий літерал "Рішення" до кінця рядкового літерала "Teckpix". Тепер, коли я надрукую об'єкт Sb, він надрукує змінений об'єкт рядка "Teckpix Solutions".
Ключова різниця між рядками та StringBuffer
- Довжина об'єкта String фіксується, але довжина об'єкта StringBuffer може бути збільшена, коли це необхідно.
- Строковий об'єкт є незмінним, тобто його об'єкт не може бути перепризначений знову, тоді як об'єкт StringBuffer змінюється.
- Об'єкт String виконується повільніше, тоді як об'єкт StringBuffer швидше.
- Об'єкт String споживає більше пам'яті, тоді як об'єкти StringBuffer споживають менше пам'яті.
- Строкові об'єкти зберігаються в константному пулі, в той час як об'єкти StringBuffer зберігаються в пам'яті купи.
Висновок:
Об'єкти StringBuffer забезпечують більшу функціональність рядків порівняно з класом String. Отже, краще працювати з StringBuffer замість класу String.