Srovnávací graf
Základ pro porovnání | Řetězec | StringBuffer |
---|---|---|
Základní | Délka objektu String je pevná. | Délka StringBufferu může být zvýšena. |
Modifikace | String objekt je neměnný. | Objekt StringBuffer je mutovatelný. |
Výkon | Během zřetězení je pomalejší. | Během zřetězení je rychlejší. |
Paměť | Spotřebovává více paměti. | Spotřebovává méně paměti. |
Úložný prostor | String konstantní fond. | Paměť haldy. |
Definice řetězce
„String“ je třída v Javě. Objekt třídy String má pevnou délku a nejdůležitější pro zapamatování je, že objekt třídy String je „neměnný“. Jakmile inicializujete objekt String, nemůžete tento objekt znovu upravovat. Objekt třídy String je uložen ve fondu konstant String.
Nejdříve pochopíme, že kdykoliv vytvoříte nějaký řetězec; vytvoříte objekt typu řetězec. Řetězcové konstanty jsou také řetězcové objekty.
System.out.println ("Ahoj to je Teckpix Solution");
Ve výše uvedeném tvrzení je řetězec „Ahoj to je Teckpix Solution“ Stringovou konstantou.
Nyní pojďme pochopit proměnlivost String objektu pomocí příkladu.
String str = new String ("Teckpix"); str.concat ("Řešení"); system.out.println (str); // výstup Teckpix
Ve výše uvedeném kódu jsem se pokusil spojit dva řetězce „Teckpix“ a „Solution“. Jak víme, kdykoliv je vytvořen řetězec, znamená to, že je vytvořen objekt typu String. Řetězec „Teckpix“ tedy vytvoří objekt, jehož odkaz je přiřazen objektu řetězce „str“. Dále jsem se pokusil zřetězit další řetězec „Solution“ s řetězcem „Teckpix“ pomocí metody „concat ()“ třídy String.
Definice StringBuffer
Třída “StringBuffer” je třída peer třídy “String”. Třída StringBuffer poskytuje více funkcí řetězcům. Objekt třídy StringBuffer je mutable, který může být změněn. Délka objektu StringBuffer je růstová. Vložíte znaky nebo podřetězce do středu řetězcového literálu, který je přiřazen objektu StringBuffer nebo na jeho konci. StringBuffer přiděluje prostor pro 16 dalších znaků, pokud není požadována žádná konkrétní délka.
Pojďme pochopit proměnlivost objektu StringBuffer pomocí příkladu:
StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ("řešení"); system.out.println (Sb); // Výstup Teckpix Solution
Jak víme, objekt StringBuffer je mutovatelný. Metoda append () modifikuje objekt StringBuffer Sb, na který byl původně přiřazen odkaz na objekt „Teckpix“. Metoda append () připojí nový řetězcový literál „Solution“ na konec řetězcového literálu „Teckpix“. Teď, když vytisknu objekt Sb, vytiskne upravený objekt řetězce „Teckpix Solutions“.
Klíčový rozdíl mezi řetězcem a StringBuffer
- Délka objektu String je pevná, ale délka objektu StringBuffer může být v případě potřeby zvýšena.
- String objekt je neměnný, to znamená, že objekt nemůže být znovu přiřazen, zatímco objekt StringBuffer je mutovatelný.
- Objekt String je ve výkonu pomalejší, zatímco objekt StringBuffer je rychlejší.
- Objekt String spotřebuje více paměti, zatímco objekty StringBuffer spotřebovávají méně paměti.
- Objekty řetězce jsou uloženy v konstantním fondu, zatímco objekty StringBuffer jsou uloženy v paměti haldy.
Závěr:
Objekty StringBuffer poskytují řetězcům více funkcí než třída String. Proto je vhodnější pracovat s StringBuffer namísto třídy String.