StringBuffer vs StringBuilder
Java je veľmi populárny objektovo orientovaný jazyk. V prostredí Java je poskytovaná trieda String, ktorá obsahuje sekvenciu znakov, ktoré nie je možné upraviť (po inicializácii). Alternatívne poskytuje programovací jazyk Java dva typy premenlivých sekvencií znakov. To znamená, že keď programátori potrebujú upraviť určitý String (po inicializácii), musia namiesto triedy String použiť triedu StringBuffer alebo 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 prostredia s jedným vláknom).
Čo je to StringBuffer?
Trieda StringBuffer bola predstavená v JDK 1.0. Trieda StringBuffer patrí do balíka java.lang a dedí sa z generického java.lang.object. Programátori to nemôžu ďalej rozširovať, pretože ide o záverečnú triedu. Trieda StringBuffer implementuje rozhrania Serializable, Appendable a CharSequience. Objekt triedy StringBuffer môže obsahovať postupnosť znakov, ktoré sú premenlivé a bezpečné pre vlákna. To znamená, že je veľmi podobné objektu String, ale postupnosť znakov (dĺžku a obsah) je možné kedykoľvek zmeniť po inicializácii objektu StringBuffer. To by sa však malo robiť pomocou špecifických metód poskytovaných triedou StringBuffer. V triede StringBuffer existujú dve základné operácie. Poskytujú sa metódami append () a insert (). Tieto metódy sú preťažené,takže sú schopní prijímať údaje ľubovoľného typu, napríklad celé číslo a dlhé. Obe metódy najskôr transformujú akýkoľvek vstup na reťazec a potom pridávajú (pridávajú alebo vkladajú) znaky zodpovedajúceho reťazca do existujúceho objektu Stribbuffer. Metóda append () pridá prevedený reťazec na koniec existujúceho objektu StringBuffer, zatiaľ čo metóda insert () pridá vstupné znaky do zadaného bodu vloženia.
Čo je to StringBuilder?
Trieda StringBuilder bola predstavená v JDK 1.5. StringBuilder API je veľmi podobné StringBuffer API. Trieda StringBuilder bola v skutočnosti predstavená ako náhrada za triedu StringBuffer (pre aplikácie s jedným vláknom). Trieda StringBuilder patrí do balíka java.lang a dedí sa z generického java.lang.object. Je to záverečná trieda, a tak ju programátori nemôžu rozširovať. Trieda StringBuilder implementuje rozhrania Serializable, Appendable a CharSequience. Objekt triedy StringBuilder môže obsahovať postupnosť znakov, ktoré sú premenlivé, ale nie bezpečné pre vlákna. To znamená, že je veľmi podobné objektu String, ale reťazec je možné kedykoľvek zmeniť. Trieda StringBuilder ale 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 podobnými funkciami ako v triede StringBuffer.
Aký je rozdiel medzi StringBuffer a StringBuilder?
Aj keď triedy StringBuilder a StringBuffer možno použiť na premenlivé sekvencie znakov v Jave, majú zásadný rozdiel. Na rozdiel od triedy StringBuffer nie je trieda StringBuilder bezpečná pre vlákna a neposkytuje žiadnu synchronizáciu. Preto sa odporúča, aby sa v aplikáciách s jedným vláknom namiesto triedy StringBuffer používala trieda StringBuilder, pretože sa tvrdí, že trieda StringBuilder bude oveľa rýchlejšia ako trieda StringBuffer (za normálnych okolností).