StringBuffer vs StringBuilder
Java este un limbaj foarte popular orientat spre obiect. În Java, clasa String este prevăzută să dețină o secvență de caractere care nu pot fi modificate (odată inițializate). Alternativ, limbajul de programare Java oferă două tipuri de secvențe de caractere mutabile. Adică, atunci când programatorii trebuie să modifice un anumit String (după inițializare), trebuie să folosească clasa StringBuffer sau clasa StringBuilder, în locul clasei String. StringBuffer a fost introdus în JDK 1.0 și clasa StringBuilder a fost introdusă în JDK 1.5, de fapt ca înlocuitor pentru clasa StringBuffer (pentru medii cu un singur fir).
Ce este StringBuffer?
Clasa StringBuffer a fost introdusă în JDK 1.0. Clasa StringBuffer aparține pachetului java.lang și este moștenită de la genericul java.lang.object. Programatorii nu-l pot extinde mai departe, deoarece este o clasă finală. Clasa StringBuffer implementează interfețe Serializable, Appendable și CharSequience. Un obiect al clasei StringBuffer poate conține o secvență de caractere care poate fi mutabilă și protejată de fir. Asta inseamna ca este foarte asemanator cu un obiect String, dar secventa de caractere (lungime si continut) poate fi schimbata in orice moment dupa initializarea obiectului StringBuffer. Totuși, aceasta ar trebui făcută folosind metodele specifice furnizate de clasa StringBuffer. Există două operații principale în clasa StringBuffer. Acestea sunt furnizate de metodele append () și insert (). Aceste metode sunt supraîncărcate, astfel încât sunt capabile să accepte date de orice tip, cum ar fi întreg și lung. Ambele metode transformă în prealabil orice intrare într-un șir și apoi adaugă (adaugă sau inserează) caracterele șirului corespunzător obiectului Stribbuffer existent. Metoda append () adaugă șirul convertit la sfârșitul obiectului StringBuffer existent, în timp ce metoda insert () va adăuga caracterele de intrare la punctul de inserare specificat.
Ce este StringBuilder?
Clasa StringBuilder a fost introdusă în JDK 1.5. API-ul StringBuilder este foarte asemănător API-ului StringBuffer. De fapt, clasa StringBuilder a fost introdusă ca înlocuitor pentru clasa StringBuffer (pentru aplicații cu un singur fir). Clasa StringBuilder aparține pachetului java.lang și este mostenit de la java.lang.object generic. Este o clasă finală, deci programatorii nu o pot extinde. Clasa StringBuilder implementează interfețe Serializable, Appendable și CharSequience. Un obiect al clasei StringBuilder poate conține o secvență de caractere care poate fi mutabilă, dar nu este sigură în legătură cu firul. Aceasta înseamnă că este foarte asemănător cu un obiect String, dar șirul poate fi modificat oricând. Dar clasa StringBuilder nu oferă sincronizare și, prin urmare, este susținută a fi mai rapidă decât utilizarea clasei StringBuffer. Clasa StringBuilder oferă metode append () și insert () cu funcții similare cu cele din clasa StringBuffer.
Care este diferența dintre StringBuffer și StringBuilder?
Deși clasele StringBuilder și StringBuffer pot fi folosite pentru secvențe mutante de caractere din Java, ele au o diferență esențială. Spre deosebire de clasa StringBuffer, clasa StringBuilder nu este sigură și nu oferă sincronizare. Prin urmare, se recomandă ca clasa StringBuilder să fie folosită în locul clasei StringBuffer în aplicațiile cu un singur fir, deoarece se susține că clasa StringBuilder va fi mult mai rapidă decât clasa StringBuffer (în condiții normale).