Különbség a String és a StringBuffer osztály között a Java-ban

Szerző: Laura McKinney
A Teremtés Dátuma: 3 Április 2021
Frissítés Dátuma: 15 Lehet 2024
Anonim
Különbség a String és a StringBuffer osztály között a Java-ban - Technológia
Különbség a String és a StringBuffer osztály között a Java-ban - Technológia

Tartalom


A String és a StringBuffer egyaránt azok a osztályok, amelyek húrokon működnek. A StringBuffer osztály a String osztály peer osztálya. A String osztály tárgya rögzített hosszúságú. A StringBuffer osztály tárgya növekvő. Az alapvető különbség a String és a StringBuffer között az, hogy a „String” osztály tárgya változhatatlan. A „StringBuffer” osztály tárgya változékony.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaHúrStringBuffer
AlapvetőA String objektum hossza rögzítve van.A StringBuffer hossza növelhető.
MódosításA karakterlánc tárgya változatlan.A StringBuffer objektum módosítható.
TeljesítményA kondenzáció során lassabb.A gyorsulás gyorsabb.
memóriaTöbb memóriát fogyaszt.Kevesebb memóriát fogyaszt.
TárolásString állandó medence.Halom memória.


A húr meghatározása

A „String” egy osztály a Java-ban. A String osztály tárgya rögzített hosszúságú, és a legfontosabb szem előtt tartani, hogy a String osztály tárgya „változatlan”. A húr objektum inicializálása után az objektum nem módosítható újra. A String osztály objektumát a String állandó készlet tárolja.

Először megértsük ezt, amikor bármilyen karakterláncot létrehozunk; létrehoz egy karakterlánc típusú objektumot. A karakterláncállandók sztringobjektumok is.

System.out.ln ("Hello, ez Teckpix megoldás");

A fenti nyilatkozatban a „Hello this is Teckpix Solution” húr karakterlánc állandó.

Most egy példa segítségével megértjük a Húr objektum változtathatóságát.


String str = új karakterlánc ("Teckpix"); str.concat ( "megoldás"); system.out.ln (str); // kimeneti Teckpix

A fenti kódban megpróbáltam összekapcsolni a „Teckpix” és a „Solution” két húrokat. Mint tudjuk, amikor egy karakterlánc jön létre, ez azt jelenti, hogy a Karakterlánc típusú objektum jön létre. Ezért a „Teckpix” karakterlánc létrehoz egy objektumot, amelynek hivatkozása a „str” karakterlánc-objektumhoz van hozzárendelve. Ezután megpróbáltam összekapcsolni egy másik „Solution” karakterláncot a „Teckpix” karakterlánccal, a String osztály „concat ()” módszerével.

Mivel a String objektumok változatlanok, a „Teckpix” karakterláncot nem módosítják, és az új „Solution” karakterlánc létrehoz egy másik objektumot a karakterlánc állandó készletében. De a „Megoldás” objektumra való hivatkozást egyetlen objektum sem foglalja el, így a Megoldás objektumra való hivatkozás elveszik, bár még mindig létezik a karakterlánc állandó készletében. Mivel a Teckpix objektumon nem történik módosítás, amikor azt az objektumot ábrázolom, amelyre korábban hozzárendeltem a Teckpix hivatkozást, csak a „Teckpix” karakterlánc lesz.

Meghatározása StringBuffer

A „StringBuffer” osztály a „String” osztály társosztálya. A StringBuffer osztály több funkcionalitást biztosít a húrokhoz. A StringBuffer osztály objektuma változtatható, azaz az objektuma módosítható. A StringBuffer objektum hossza növekvő. A karaktereket vagy az alsó karaktersorozatokat beillesztheti a karakterlánc közepébe, amelyet a StringBuffer objektumhoz rendeltek, vagy annak végére. A StringBuffer 16 további karakter számára ad helyet, ha nincs megadva hosszúság.

Példa segítségével megértjük a StringBuffer objektum változtathatóságát:

StringBuffer Sb = új StringBuffer ("Teckpix"); Sb.append ( "megoldás"); system.out.ln (Sb); // Output Teckpix megoldás

Mint tudjuk, hogy a StringBuffer objektum változtatható. Az (függelék) módszer módosítja az StrbBuffer Sb objektumot, amelyre kezdetben a „Teckpix” objektum hivatkozása korábban kerül hozzárendelésre. Az append () módszer hozzáfűzi az új „Megoldás” karakterláncot a „Teckpix” karakterlánc végéhez. Most, amikor az Sb objektumot kapom, a módosított „Teckpix Solutions” karakterláncolat lesz.

  1. A String objektum hossza rögzített, de a StringBuffer objektum hossza szükség esetén növelhető.
  2. A karakterlánc-objektum változatlan, azaz az objektumot nem lehet újra hozzárendelni, míg a StringBuffer objektuma változtatható.
  3. A húrobjektum teljesítménye lassabb, míg a StringBuffer objektum gyorsabb.
  4. A karakterláncobjektumok több memóriát fogyasztanak, míg a StringBuffer objektumok kevesebb memóriát fogyasztanak.
  5. A karakterláncokat állandó készletben tárolják, míg a StringBuffer objektumokat a halom memóriában tárolják.

Következtetés:

A StringBuffer objektumok több funkcionalitást biztosítanak a karakterláncokhoz, mint a String osztály. Ezért inkább a StringBufferrel együtt kell dolgozni, mint a String osztályba.