StringBuffer vs StringBuilder
Java je zelo priljubljen objektno usmerjen jezik. V Javi je razred String na voljo za zaporedje znakov, ki jih ni mogoče spremeniti (ko so inicializirane). Programski jezik Java ponuja tudi dve vrsti spremenljivih zaporedij znakov. To pomeni, da ko morajo programerji spremeniti določen niz (po inicializaciji), morajo namesto razreda String uporabiti razred StringBuffer ali razred StringBuilder. StringBuffer je bil uveden v JDK 1.0, razred StringBuilder pa v JDK 1.5, pravzaprav kot zamenjava za razred StringBuffer (za okolja z enim niti).
Kaj je StringBuffer?
Razred StringBuffer je bil uveden v JDK 1.0. Razred StringBuffer pripada paketu java.lang in je podedovan od generičnega predmeta java.lang.object. Programerji ga ne morejo še razširiti, saj gre za zadnji razred. Razred StringBuffer izvaja vmesnike Serializable, Appendable in CharSequience. Predmet razreda StringBuffer lahko vsebuje zaporedje znakov, ki je spremenljivo in varno pred nitmi. To pomeni, da je zelo podoben predmetu String, vendar lahko zaporedje znakov (dolžino in vsebino) kadar koli spremenite po inicializaciji predmeta StringBuffer. Vendar je to treba storiti z uporabo posebnih metod, ki jih ponuja razred StringBuffer. V razredu StringBuffer sta dve glavni operaciji. Na voljo so z metodama append () in insert (). Te metode so preobremenjene,tako lahko sprejmejo podatke katere koli vrste, na primer celo število in dolge. Obe metodi najprej pretvorita kateri koli vhod v niz, nato pa obstoječemu objektu Stribbuffer doda (doda ali vstavi) znake ustreznega niza. Metoda append () doda pretvorjeni niz na konec obstoječega predmeta StringBuffer, metoda insert () pa doda vhodne znake na določeno točko vstavljanja.
Kaj je StringBuilder?
Razred StringBuilder je bil uveden v JDK 1.5. StringBuilder API je zelo podoben StringBuffer API. Dejansko je bil razred StringBuilder dejansko uveden kot zamenjava za razred StringBuffer (za enonitne aplikacije). Razred StringBuilder pripada paketu java.lang in je podedovan od generičnega java.lang.object. To je zadnji razred, zato ga programerji ne morejo razširiti. Razred StringBuilder izvaja vmesnike Serializable, Appendable in CharSequience. Predmet razreda StringBuilder lahko vsebuje zaporedje znakov, ki je spremenljivo, vendar ni varno za nit. To pomeni, da je zelo podoben predmetu String, vendar ga lahko kadar koli spremenite. Toda razred StringBuilder ne zagotavlja sinhronizacije in zato trdi, da je hitrejši od uporabe razreda StringBuffer. Razred StringBuilder ponuja metode append () in insert () s popolnoma podobno funkcionalnostjo kot v razredu StringBuffer.
Kakšna je razlika med StringBuffer in StringBuilder?
Razrede StringBuilder in StringBuffer je mogoče uporabiti za spremenljiva zaporedja znakov v Javi, vendar imajo ključno razliko. Za razliko od razreda StringBuffer razred StringBuilder ni varen za nit in ne zagotavlja sinhronizacije. Zato je priporočljivo, da se razred StringBuilder uporablja namesto razreda StringBuffer v aplikacijah z enim niti, ker se trdi, da bo razred StringBuilder veliko hitrejši od razreda StringBuffer (v običajnih okoliščinah).