Különbség a String és a StringBuffer osztály között a Java-ban
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.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Húr | StringBuffer |
---|---|---|
Alapvető | A String objektum hossza rögzítve van. | A StringBuffer hossza növelhető. |
Módosítás | A karakterlánc tárgya változatlan. | A StringBuffer objektum módosítható. |
Teljesítmény | A kondenzáció során lassabb. | A gyorsulás gyorsabb. |
memória | Több memóriát fogyaszt. | Kevesebb memóriát fogyaszt. |
Tárolás | String á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.
- A String objektum hossza rögzített, de a StringBuffer objektum hossza szükség esetén növelhető.
- A karakterlánc-objektum változatlan, azaz az objektumot nem lehet újra hozzárendelni, míg a StringBuffer objektuma változtatható.
- A húrobjektum teljesítménye lassabb, míg a StringBuffer objektum gyorsabb.
- A karakterláncobjektumok több memóriát fogyasztanak, míg a StringBuffer objektumok kevesebb memóriát fogyasztanak.
- 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.