Rozdíl mezi třídou String a StringBuffer v Javě

Autor: Laura McKinney
Datum Vytvoření: 3 Duben 2021
Datum Aktualizace: 13 Smět 2024
Anonim
Rozdíl mezi třídou String a StringBuffer v Javě - Technologie
Rozdíl mezi třídou String a StringBuffer v Javě - Technologie

Obsah


String a StringBuffer jsou třídy, které fungují na řetězcích. Třída StringBuffer je třída vrstevníků třídy String. Objekt třídy String má pevnou délku. Objekt třídy StringBuffer je pěstitelný. Základní rozdíl mezi String a StringBuffer spočívá v tom, že objekt třídy „String“ je neměnný. Předmět třídy „StringBuffer“ proměnlivý.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníŘetězecStringBuffer
ZákladníDélka objektu String je pevná.Délku StringBuffer lze zvětšit.
ModifikaceŘetězcový objekt je neměnný.Objekt StringBuffer je zaměnitelný.
VýkonBěhem zřetězení je pomalejší.Během zřetězení je rychlejší.
PaměťSpotřebuje více paměti.Spotřebuje méně paměti.
Úložný prostorŘetězec konstantní fond.Haldy paměti.


Definice řetězce

„String“ je třída v Javě. Objekt třídy String má pevnou délku a nejdůležitější je pamatovat si, že objekt třídy String je „neměnný“. Jakmile inicializujete objekt String, nemůžete tento objekt znovu upravit. Objekt třídy String je uložen ve fondu konstantních řetězců String.

Nejprve to pochopíme, kdykoli vytvoříte jakýkoli řetězec; vytvoříte objekt typu řetězce. Řetězcové konstanty jsou také řetězcovými objekty.

System.out.ln ("Ahoj, tohle je řešení Teckpix");

Ve výše uvedeném prohlášení je řetězec „Ahoj tohle je řešení Teckpix“ Stringova konstanta.

Nyní si vysvětlíme mutabilitu objektu String pomocí příkladu.

String str = new String ("Teckpix"); str.concat ("Řešení"); system.out.ln (str); // výstup Teckpix

Ve výše uvedeném kódu jsem se pokusil zřetězit dva řetězce „Teckpix“ a „Solution“. Jak víme, kdykoli je vytvořen řetězec, znamená to, že se vytvoří objekt typu String. Řetězec „Teckpix“ tedy vytvoří objekt, jehož odkaz je přiřazen řetězci „str“. Dále jsem se pokusil zřetězit další řetězec „Řešení“ řetězcem „Teckpix“ pomocí metody „concat ()“ třídy String.


Protože objekty String jsou neměnné, neprovádí se žádná modifikace řetězce „Teckpix“ a nový řetězec „Solution“ vytvoří další objekt ve fondu konstantních řetězců. Odkaz na objekt „Řešení“ však není zachycen žádným objektem, proto je odkaz na objekt Řešení ztracen, přestože je stále přítomen ve fondu konstantních řetězců. Protože u objektu Teckpix není provedena žádná změna, když jsem objektem, ke kterému jsem dříve přidělil odkaz na Teckpix, bude pouze řetězec „Teckpix“.

Definice StringBuffer

Třída „StringBuffer“ je třída vrstevníků třídy „String“. Třída StringBuffer poskytuje více funkcí řetězcům. Objekt třídy StringBuffer je proměnlivý, takže jeho objekt lze upravit. Délka objektu StringBuffer je rozšiřitelná. Znaky nebo podřetězce můžete vložit do středu řetězcového literálu, který je přiřazen k objektu StringBuffer nebo na jeho konec. StringBuffer přiděluje místo pro 16 dalších znaků, pokud není vyžadována žádná konkrétní délka.

Pojďme porozumět proměnlivosti objektu StringBuffer pomocí příkladu:

StringBuffer Sb = nový StringBuffer ("Teckpix"); Sb.append („Řešení“); system.out.ln (Sb); // Výstupní řešení Teckpix

Jak víme, objekt StringBuffer je zaměnitelný. Metoda append () modifikuje objekt StringBuffer Sb, kterému byl původně přiřazen odkaz na objekt „Teckpix“ dříve. Metoda append () připojí nový řetězcový literál „Solution“ na konec řetězcového literálu „Teckpix“. Nyní, když budu objekt Sb, bude to modifikovaný řetězcový objekt „Teckpix Solutions“.

  1. Délka objektu String je pevná, ale délka objektu StringBuffer může být v případě potřeby prodloužena.
  2. Objekt String je neměnný, tj. Nemůže být znovu přiřazen, zatímco objekt StringBuffer je zaměnitelný.
  3. Objekt String je ve výkonu pomalejší, zatímco objekt StringBuffer je rychlejší.
  4. Objekt String spotřebovává více paměti, zatímco objekty StringBuffer spotřebovávají méně paměti.
  5. Objekty String jsou ukládány v konstantní oblasti, zatímco objekty StringBuffer jsou ukládány do paměti haldy.

Závěr:

Objekty StringBuffer poskytují řetězcům více funkcí ve srovnání s třídou String. Proto je lepší pracovat s StringBuffer místo třídy String.