Razlika med nizom String in StringBuffer na Javi

Avtor: Laura McKinney
Datum Ustvarjanja: 3 April 2021
Datum Posodobitve: 17 Maj 2024
Anonim
Razlika med nizom String in StringBuffer na Javi - Tehnologija
Razlika med nizom String in StringBuffer na Javi - Tehnologija

Vsebina


String in StringBuffer sta razreda, ki delujeta na strunah. StringBuffer razred je vrstnik razreda razreda String. Predmet razreda String je fiksne dolžine. Predmet razreda StringBuffer je gojljiv. Osnovna razlika med String in StringBuffer je, da je predmet razreda "String" nespremenljiv. Predmet razreda "StringBuffer" spremenljiv.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoStringStringBuffer
OsnovniDolžina predmeta String je določena.Dolžino StringBufferja lahko povečate.
SpremembeObjekt strune je nespremenljiv.Predmet StringBuffer je spremenljiv.
IzvedbaMed spojenjem je počasnejši.Hitrejša je med konkatenacijo.
SpominPorabi več pomnilnika.Porabi manj pomnilnika.
SkladiščenjeString stalni bazen.Heap Memory.


Opredelitev niza

"String" je razred v Javi. Predmet razreda String je fiksne dolžine in kar je najpomembneje, da si zapomnimo, da je objekt razreda String "nespremenljiv". Ko inicializirate objekt String, ga ne morete več spreminjati. Predmet razreda String je shranjen v konstantnem področju String.

Najprej to razumemo, kadar koli ustvarite kateri koli niz; ustvarite objekt vrste niza. Nizke konstante so tudi nizi.

System.out.ln ("Pozdravljeni, to je rešitev Teckpix");

V zgornji trditvi je niz "Pozdravljeni, to je Teckpix Solution".

Zdaj pa s pomočjo primera razumemo mutabilnost predmeta String.

String str = nov niz ("Teckpix"); str.concat ("Rešitev"); system.out.ln (str); // izhod Teckpix

Zgornja koda sem poskušala povezati dva niza "Teckpix" in "Solution". Kot vemo, kadar koli je ustvarjen niz, ki pomeni, da je ustvarjen objekt tipa String. Torej, niz "Teckpix" ustvari predmet, katerega referenca je dodeljena nizu "str". Nato sem poskusil združiti nov niz "Rešitev" z nizom "Teckpix" z metodo "concat ()" razreda String.


Ker so predmeti String nespremenljivi, se niz "Teckpix" ne spremeni, nov niz "Solution" pa ustvari drug objekt v konstantnem področju nizov. Toda sklicevanja na objekt "Rešitev" ne zajame noben predmet, zato se sklic na objekt Rešitev izgubi, čeprav je še vedno prisoten v konstantnem nizu nizov. Ker se pri predmetu Teckpix ne opravi nobena sprememba, bom v primeru, ko bom objekt str, na katerega sem prej dodelil sklic Teckpix, samo niz "Teckpix".

Opredelitev StringBuffer

Razred "StringBuffer" je razred vrstnikov razreda "String". Razred StringBuffer zagotavlja več funkcionalnosti strunam. Predmet razreda StringBuffer je spremenljiv, zato je njegov predmet mogoče spremeniti. Dolžina predmeta StringBuffer je gojilna. Znake ali podvrsti lahko vstavite v sredino dobesednega niza, ki je dodeljen predmetu StringBuffer ali na koncu njega. StringBuffer dodeli prostor za 16 dodatnih znakov, kadar ni zahtevana določena dolžina.

Razumejmo mutabilnost predmeta StringBuffer s pomočjo primera:

StringBuffer Sb = nov StringBuffer ("Teckpix"); Sb.append ("Rešitev"); system.out.ln (Sb); // Izhodna rešitev Teckpix

Kot vemo, je objekt StringBuffer spremenljiv. Metoda append () spreminja objekt StbBuffer Sb, na katerega je sprva že prej dodeljena referenca predmeta "Teckpix". Metoda append () doda novo besedilo niza "Solution" na konec nizavnega besedila "Teckpix". Ko bom predmet Sb, bom spremenjen niz z objektom "Teckpix Solutions".

  1. Dolžina predmeta String je določena, vendar se lahko dolžina predmeta StringBufferja po potrebi poveča.
  2. Objekt strune je nespremenljiv, tj. Predmeta ni mogoče znova dodeliti, medtem ko je objekt StringBuffer spremenljiv.
  3. Objekt strune je počasnejši, medtem ko je objekt StringBuffer hitrejši.
  4. String objekt porabi več pomnilnika, medtem ko StringBuffer predmeti porabijo manj pomnilnika.
  5. String predmeti so shranjeni v konstantnem bazenu, medtem ko so predmeti StringBuffer shranjeni v heap spominu.

Zaključek:

Predmeti StringBuffer dajejo strunam več funkcionalnosti v primerjavi s razredom String. Zato je bolje delati z StringBuffer namesto razreda String.