Razlika med StringBuffer in StringBuilder

StringBuffer proti StringBuilder

Java je zelo priljubljen objektno orientiran jezik. V Javi je razred String na voljo za zaporedje znakov, ki jih ni mogoče spremeniti (enkrat inicializirati). Java programski jezik ponuja tudi dve vrsti spremenljivih zaporedij znakov. To pomeni, da morajo programerji namesto razreda String spremeniti določen String (po inicializaciji) uporabiti razred StringBuffer ali StringBuilder. StringBuffer je bil predstavljen v JDK 1.0, razred StringBuilder pa v JDK 1.5, pravzaprav kot zamenjava za razred StringBuffer (za okolje z enim navojem).

Kaj je StringBuffer?

StringBuffer razred je bil predstavljen v JDK 1.0. StringBuffer razred spada v paket java.lang in je podedovan od splošnega java.lang.object. Programerji ga ne morejo nadaljevati, ker je to končni razred. StringBuffer razred izvaja vmesnike Serializable, Appendable in CharSequience. Objekt razreda StringBuffer lahko vsebuje zaporedje znakov, ki jih je mogoče spremeniti in navoje. To pomeni, da je zelo podoben String objektu, vendar je zaporedje znakov (dolžina in vsebina) mogoče spremeniti kadarkoli po inicializaciji predmeta StringBuffer. Vendar bi to morali storiti z uporabo posebnih metod, ki jih ponuja razred StringBuffer. V razredu StringBuffer obstajata dve glavni operaciji. Določajo jih z dodajanjem () in vstavitvijo (). Te metode so preobremenjene, zato lahko sprejemajo podatke katere koli vrste, na primer cela in dolga. Obe metodi najprej pretvorita kateri koli vhod v niz in nato dodate (dodate ali vstavite) znake ustreznega niza obstoječemu objektu Stribbuffer. Metoda append () doda pretvorjeni niz na konec obstoječega predmeta StringBuffer, medtem ko metoda insert () doda vnesene znake v podano točko vstavljanja.

Kaj je StringBuilder?

StringBuilder razred je bil predstavljen v JDK 1.5. StringBuilder API je zelo podoben StringBuffer API-ju. Pravzaprav je bil razred StringBuilder dejansko predstavljen kot zamenjava za razred StringBuffer (za aplikacije z enim navojem). StringBuilder razred spada v paket java.lang in je podedovan iz splošnega java.lang.object. To je končni razred, zato ga programerji ne morejo podaljšati. StringBuilder razred izvaja vmesnike Serializable, Appendable in CharSequience. Objekt razreda StringBuilder lahko vsebuje zaporedje znakov, ki jih je mogoče spremeniti, vendar niso varne z nitmi. To pomeni, da je zelo podoben predmetu String, vendar je niz mogoče kadar koli spremeniti. Toda StringBuilder razred ne zagotavlja sinhronizacije, zato se trdi, da je hitrejši kot uporaba razreda StringBuffer. Razred StringBuilder ponuja metode dodajanja () in vstavitve () s povsem podobno funkcionalnostjo kot v razredu StringBuffer.

Kakšna je razlika med StringBuffer in StringBuilder?

Čeprav lahko razrede StringBuilder in StringBuffer uporabljate za spremenljive zaporedje znakov na Javi, imajo ključno razliko. Za razliko od razreda StringBuffer, razred StringBuilder ni varen po niti in ne omogoča sinhronizacije. Zato je priporočljivo, da se v razredu StringBuffer namesto razreda StringBuffer uporablja enorazredni program, ker se trdi, da bo razred StringBuilder veliko hitrejši od razreda StringBuffer (v normalnih okoliščinah).