StringBuffer vs StringBuilder
Java je veľmi populárny objektovo orientovaný jazyk. V jazyku Java je k dispozícii trieda String, ktorá obsahuje sekvenciu znakov, ktoré nie je možné zmeniť (po inicializácii). Alternatívne programovací jazyk Java poskytuje dva typy meniteľných sekvencií znakov. To znamená, že keď programátori potrebujú upraviť určitý reťazec (po inicializácii), musia namiesto triedy String použiť triedu StringBuffer alebo triedu StringBuilder. StringBuffer bol predstavený v JDK 1.0 a trieda StringBuilder bola predstavená v JDK 1.5, vlastne ako náhrada za triedu StringBuffer (pre jednovláknové prostredia).
Čo je StringBuffer?
Trieda StringBuffer bola predstavená v JDK 1.0. Trieda StringBuffer patrí do balíka java.lang a je zdedená z generického java.lang.object. Programátori ju nemôžu ďalej rozširovať, pretože je to posledná trieda. Trieda StringBuffer implementuje rozhrania Serializable, Appendable a CharSequience. Objekt triedy StringBuffer môže obsahovať sekvenciu znakov, ktorá je premenlivá a bezpečná pre vlákna. To znamená, že je veľmi podobný objektu String, ale poradie znakov (dĺžka a obsah) sa môže kedykoľvek zmeniť po inicializácii objektu StringBuffer. Malo by sa to však vykonať pomocou špecifických metód poskytovaných triedou StringBuffer. Trieda StringBuffer má dve základné operácie. Poskytujú ich metódy append() a insert(). Tieto metódy sú preťažené, takže sú schopné akceptovať dáta akéhokoľvek typu, napríklad celé číslo a dlhé. Obe metódy najprv transformujú akýkoľvek vstup na reťazec a potom pridajú (pridajú alebo vložia) znaky zodpovedajúceho reťazca do existujúceho objektu Stribbuffer. Metóda append() pridá skonvertovaný reťazec na koniec existujúceho objektu StringBuffer, zatiaľ čo metóda insert() pridá vstupné znaky do určeného bodu vloženia.
Čo je StringBuilder?
Trieda StringBuilder bola predstavená v JDK 1.5. StringBuilder API je veľmi podobné StringBuffer API. V skutočnosti bola trieda StringBuilder v skutočnosti predstavená ako náhrada za triedu StringBuffer (pre jednovláknové aplikácie). Trieda StringBuilder patrí do balíka java.lang a je zdedená z generického java.lang.object. Je to záverečná trieda, a preto ju programátori nemôžu rozširovať. Trieda StringBuilder implementuje rozhrania Serializable, Appendable a CharSequience. Objekt triedy StringBuilder môže obsahovať sekvenciu znakov, ktorá je meniteľná, ale nie je bezpečná pre vlákna. To znamená, že je veľmi podobný objektu String, ale reťazec možno kedykoľvek zmeniť. Ale trieda StringBuilder neposkytuje synchronizáciu, a preto sa tvrdí, že je rýchlejšia ako použitie triedy StringBuffer. Trieda StringBuilder poskytuje metódy append() a insert() s presne podobnou funkcionalitou ako trieda StringBuffer.
Aký je rozdiel medzi StringBuffer a StringBuilder?
Hoci triedy StringBuilder a StringBuffer možno použiť pre meniteľné sekvencie znakov v jazyku Java, majú zásadný rozdiel. Na rozdiel od triedy StringBuffer trieda StringBuilder nie je bezpečná pre vlákna a neposkytuje žiadnu synchronizáciu. Preto sa odporúča, aby sa trieda StringBuilder používala namiesto triedy StringBuffer v aplikáciách s jedným vláknom, pretože sa tvrdí, že trieda StringBuilder bude oveľa rýchlejšia ako trieda StringBuffer (za normálnych okolností).