Ajánlott, 2024

Szerkesztő Választása

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

A String és a StringBuffer egyaránt azok a osztályok, amelyek a karakterláncokon működnek. A StringBuffer osztály a String osztályosztálya. A String osztály objektuma fix hosszúságú. A StringBuffer osztály tárgya nőtt. A String és StringBuffer közötti különbség az, hogy a „String” osztály tárgya változatlan . A „StringBuffer” osztály tárgya módosítható .

Ö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 string objektum változhatatlan.A StringBuffer objektum módosítható.
TeljesítményLassabb az összefűzés során.Gyorsabb az összefűzés során.
memóriaTöbb memóriát fogyaszt.Kevesebb memóriát fogyaszt.
TárolásString állandó medence.Halom memória.

A karakterlánc meghatározása

A „String” egy Java osztály. A String-osztály tárgya rögzített hosszúságú, és a legfontosabb, hogy emlékezzünk rá, hogy a String osztály tárgya „megváltoztathatatlan”. A String objektum inicializálása után nem módosíthatja újra az objektumot. A String karakterlánc objektumát a String állandó tárolója tárolja.

Először értsük meg, hogy ha bármilyen karakterláncot hoz létre; létrehoz egy típusú karakterláncot. A karakterlánc-konstansok is karakterlánc objektumok.

 System.out.println ("Hello ez a Teckpix megoldás"); 

A fenti állításban a „Hello this is Teckpix Solution” karakterlánc konstans.

Most egy példa segítségével megértsük a String objektum mutálhatóságát.

 Str = str = új karakterlánc ("Teckpix"); str.concat ( "megoldás"); system.out.println (str); // kimenet Teckpix 

A fenti kódon belül megpróbáltam összekapcsolni a két „Teckpix” és „Solution” sztringet. Mint tudjuk, hogy amikor egy karakterláncot hozunk létre, akkor a String típus típusa jön létre. Ezért a „Teckpix” karakterlánc létrehoz egy objektumot, amelynek hivatkozása a „str” karakterlánc objektumhoz van rendelve. Ezután megpróbáltam egy másik „Solution” karakterláncot összevetni a „Teckpix” karakterlánc sztring „concat ()” módszerével.

Mivel a String objektumok megváltoztathatatlanok, a „Teckpix” karakterlánc nem módosul, és a „Solution” új karakterlánc egy másik objektumot hoz létre a karakterlánc állandó medencében. A „Megoldás” objektumra való utalás azonban nem fog semmilyen tárgyat megragadni, így az objektum Megoldás hivatkozás elveszik, bár még mindig jelen van a karakterlánc állandó medencében. Mivel a Teckpix objektumhoz semmilyen módosítás nem történik, amikor nyomtatom ki azt az objektumot, amelyre korábban a Teckpix hivatkozást adtam, csak a „Teckpix” karakterláncot nyomtatja ki.

A StringBuffer meghatározása

A „StringBuffer” osztály a „String” osztály osztálytársa. A StringBuffer osztály több funkciót biztosít a karakterláncoknak. A StringBuffer osztály objektuma mutálható, azaz annak objektuma módosítható. A StringBuffer objektum hossza növekszik. A karaktereket vagy szubsztrátumokat a StringBuffer objektumhoz hozzárendelt karakterláncok közepére vagy annak végén helyezheti el. A StringBuffer 16 további karakter számára ad helyet, ha nincs meghatározott hosszúság.

Egy példa segítségével megértsük a StringBuffer objektum mutativitását:

 StringBuffre Sb = új StringBuffer ("Teckpix"); Sb.append ( "megoldás"); system.out.println (Sb); // Kimeneti Teckpix megoldás 

Mint tudjuk, a StringBuffer objektum változó. A () metódus módosítja a StringBuffer Sb objektumot, amelyhez először a „Teckpix” objektum hivatkozása van hozzárendelve. A metódus hozzáadásával () hozzáadjuk az új karakterláncú „Solution” szót a „Teckpix” karakterlánc végéhez. Most, amikor kinyomtatom az Sb objektumot, kinyomtatja a „Teckpix Solutions” módosított string objektumot.

A String és a StringBuffer közötti különbség

  1. A String objektum hossza rögzítve van, de a StringBuffer objektumának hossza szükség esetén növelhető.
  2. A sztring objektum megváltoztathatatlan, azaz az objektumot nem lehet újra átcsoportosítani, míg a StringBuffer objektuma változhat.
  3. A karakterlánc objektum lassabb a teljesítményben, míg a StringBuffer objektum gyorsabb.
  4. A sztringobjektum több memóriát fogyaszt, míg a StringBuffer objektumok kevesebb memóriát fogyasztanak.
  5. A karakterlánc objektumokat egy állandó tárolóban tárolják, míg a StringBuffer objektumok a halom memóriájában tárolódnak.

Következtetés:

A StringBuffer objektumok a String-hez képest több funkciót biztosítanak a karakterláncokhoz. Ezért előnyösebb, ha StringBufferrel dolgozunk, nem a String karakterlánc helyett.

Top