StringBuffer vs StringBuilder
Java je vrlo popularan objektno orijentiran jezik. U Javi je predviđena klasa String da drži niz znakova koji se ne mogu mijenjati (jednom inicijaliziranom). Alternativno, programski jezik Java nudi dvije vrste promjenjivih nizova znakova. To jest, kada programeri trebaju modificirati određeni String (nakon inicijalizacije), umjesto klase String moraju koristiti klasu StringBuffer ili StringBuilder. StringBuffer je uveden u JDK 1.0, a StringBuilder klasa je uvedena u JDK 1.5, zapravo kao zamjena za StringBuffer klasu (za okruženje s jednim nitima).
Što je StringBuffer?
StringBuffer klasa predstavljena je u JDK 1.0. StringBuffer klasa pripada java.lang paketu i nasljeđuje se od generičkog java.lang.object. Programeri ga ne mogu dalje produžiti, jer je to finalna klasa. StringBuffer klasa implementira serijska, sučelja i CharSequience sučelja. Objekt klase StringBuffer može sadržavati niz znakova koji je moguće mijenjati i nitima. To znači da je vrlo sličan String objektu, ali slijed znakova (duljina i sadržaj) može se promijeniti u bilo kojem trenutku nakon inicijalizacije StringBuffer objekta. Međutim, to treba učiniti pomoću posebnih metoda koje pruža klasa StringBuffer. U klasi StringBuffer postoje dvije glavne operacije. Dobivaju se dodavanjem () i umetanjem () metoda. Ove su metode preopterećene, pa su u stanju prihvatiti podatke bilo koje vrste, poput cjelobrojnih i dugih. Obje metode prvo transformiraju bilo koji ulaz u niz, a zatim dodaju (dodaje ili umeće) znakove odgovarajućeg niza postojećem Stribbuffer objektu. Metoda append () dodaje pretvoreni niz na kraj postojećeg objekta StringBuffer, dok će metoda insert () dodati unesene znakove određenoj točki umetanja.
Što je StringBuilder?
StringBuilder klasa predstavljena je u JDK 1.5. StringBuilder API vrlo je sličan StringBuffer API-ju. U stvari, klasa StringBuilder je zapravo predstavljena kao zamjena za StringBuffer klasu (za aplikacije s jednim nitima). StringBuilder klasa pripada java.lang paketu i nasljeđuje se od generičkog java.lang.object. To je konačna klasa pa je programeri ne mogu proširiti. StringBuilder klasa implementira serijska, sučelja i CharSequience sučelja. Objekt klase StringBuilder može sadržavati niz znakova koji se može mijenjati, ali nije siguran od niti. To znači da je vrlo sličan String objektu, ali niz se može promijeniti u bilo kojem trenutku. No, klasa StringBuilder ne omogućuje sinkronizaciju i stoga se tvrdi da je brža od korištenja klase StringBuffer. StringBuilder klasa pruža metode append () i insert () s točno sličnim funkcijama kao u StringBuffer klasi.
Koja je razlika između StringBuffer i StringBuilder?
Iako se klase StringBuilder i StringBuffer mogu koristiti za promjenjive nizove znakova na Javi, imaju ključnu razliku. Za razliku od klase StringBuffer, klasa StringBuilder nije sigurna na niti i ne omogućuje sinkronizaciju. Zbog toga se preporučuje da se klasa StringBuilder koristi umjesto klase StringBuffer u aplikacijama s jednim navojem, jer se tvrdi da će klasa StringBuilder biti mnogo brža od klase StringBuffer (u normalnim okolnostima).