StringBuffer vs StringBuilder
Java je velmi populární objektově orientovaný jazyk. V Javě je k dispozici třída String, která obsahuje sekvenci znaků, které nelze změnit (jakmile jsou inicializovány). Programovací jazyk Java poskytuje alternativně dva typy proměnných sekvencí znaků. To znamená, že když programátoři potřebují upravit určitý řetězec (po inicializaci), musí místo třídy String použít třídu StringBuffer nebo třídu StringBuilder. StringBuffer byl představen v JDK 1.0 a třída StringBuilder byla představena v JDK 1.5, ve skutečnosti jako náhrada za třídu StringBuffer (pro prostředí s jedním vláknem).
Co je StringBuffer?
Třída StringBuffer byla představena v JDK 1.0. Třída StringBuffer patří do balíčku java.lang a je zděděna z obecného java.lang.object. Programátoři to nemohou dále rozšiřovat, protože je to konečná třída. Třída StringBuffer implementuje rozhraní Serializable, Appendable a CharSequience. Objekt třídy StringBuffer může pojmout posloupnost znaků, která je zaměnitelná a bezpečná pro vlákna. To znamená, že je velmi podobný objektu String, ale posloupnost znaků (délka a obsah) lze kdykoli po inicializaci objektu StringBuffer změnit. To by však mělo být provedeno pomocí specifických metod poskytovaných třídou StringBuffer. Ve třídě StringBuffer existují dvě základní operace. Jsou poskytovány metodami append () a insert (). Tyto metody jsou přetížené, takže jsou schopny přijímat data jakéhokoli typu, jako je celé číslo a dlouhé. Obě metody nejprve transformují jakýkoli vstup do řetězce a poté přidají (připojí nebo vloží) znaky odpovídajícího řetězce do existujícího objektu Stribbuffer. Metoda append () přidá převedený řetězec na konec existujícího objektu StringBuffer, zatímco metoda insert () přidá vstupní znaky do určeného bodu vložení.
Co je StringBuilder?
Třída StringBuilder byla představena v JDK 1.5. StringBuilder API je velmi podobné StringBuffer API. Ve skutečnosti byla třída StringBuilder skutečně představena jako náhrada za třídu StringBuffer (pro aplikace s jedním vláknem). Třída StringBuilder patří do balíčku java.lang a je zděděna z obecného java.lang.object. Je to konečná třída, takže ji programátoři nemohou rozšířit. Třída StringBuilder implementuje rozhraní Serializable, Appendable a CharSequience. Objekt třídy StringBuilder může obsahovat sekvenci znaků, která je zaměnitelná, ale není bezpečná pro vlákna. To znamená, že je velmi podobný objektu String, ale řetězec lze kdykoli změnit. Třída StringBuilder však neposkytuje synchronizaci, a proto se tvrdí, že je rychlejší než použití třídy StringBuffer. Třída StringBuilder poskytuje metody append () a insert () s přesně podobnou funkcionalitou jako ve třídě StringBuffer.
Jaký je rozdíl mezi StringBuffer a StringBuilder?
Přestože třídy StringBuilder a StringBuffer lze použít pro proměnné sekvence znaků v Javě, mají zásadní rozdíl. Na rozdíl od třídy StringBuffer není třída StringBuilder bezpečná pro podprocesy a neposkytuje žádnou synchronizaci. Proto se doporučuje použít třídu StringBuilder namísto třídy StringBuffer v aplikacích s jedním vláknem, protože se tvrdí, že třída StringBuilder bude mnohem rychlejší než třída StringBuffer (za normálních okolností).