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

Автор: bodzu ← обратно към списъка ← →

Класът String е неизменен - ​​не можете да модифицирате String обект, но можете да го замените, като създадете нов екземпляр. Създаването на нов екземпляр е скъпо: Частта от код в примера по-горе ще създаде 99 нови String обекта, 98 от които ще бъдат незабавно отхвърлени. Създаването на нови обекти е неефективно.

Класът StringBuffer е променлив - използвайте StringBuffer или StringBuilder, когато искате да промените съдържанието. StringBuilder е добавен в Java 5 и е идентичен с класа StringBuffer по всякакъв начин, с изключение на това, че не е синхронизиран, което го прави много по-бърз. Но цената на скоростта е небезопасно поведение в многонишкова среда. Горният код създава само два нови обекта, StringBuffer и низова константа, която се връща. StringBuffer се разширява при необходимост, което е скъпо, така че е най-добре да инициализирате StringBuffer с правилния размер.

Друг важен момент е, че създаването на допълнителни низове не се ограничава до математическия оператор "+", но има редица методи като concat(), trim(), substring(), replace() в класовете String, които генерират нови обекти.

Ако харесвате въпроса, моля, гласувайте за него

Гласове: 43 Гласуване