Разлика между String, StringBuffer
Автор: bodzu ← обратно към списъка ← →
Класът String е неизменен - не можете да модифицирате String обект, но можете да го замените, като създадете нов екземпляр. Създаването на нов екземпляр е скъпо: Частта от код в примера по-горе ще създаде 99 нови String обекта, 98 от които ще бъдат незабавно отхвърлени. Създаването на нови обекти е неефективно.
Класът StringBuffer е променлив - използвайте StringBuffer или StringBuilder, когато искате да промените съдържанието. StringBuilder е добавен в Java 5 и е идентичен с класа StringBuffer по всякакъв начин, с изключение на това, че не е синхронизиран, което го прави много по-бърз. Но цената на скоростта е небезопасно поведение в многонишкова среда. Горният код създава само два нови обекта, StringBuffer и низова константа, която се връща. StringBuffer се разширява при необходимост, което е скъпо, така че е най-добре да инициализирате StringBuffer с правилния размер.
Друг важен момент е, че създаването на допълнителни низове не се ограничава до математическия оператор "+", но има редица методи като concat(), trim(), substring(), replace() в класовете String, които генерират нови обекти.
Ако харесвате въпроса, моля, гласувайте за него
Гласове: 43 Гласуване