Soovitatav, 2024

Toimetaja Valik

Stringi ja StringBufferi klassi erinevus Java-is

String ja StringBuffer on mõlemad klassid, mis töötavad stringidel. StringBuffer klass on klassi String peer klass. Stringiklassi objekt on fikseeritud pikkusega. StringBufferi klassi objekt on kasvav. Stringi ja StringBufferi põhiline erinevus on see, et “String” klassi objekt on muutumatu . Klassi „StringBuffer” objekt on muutuv .

Võrdluskaart

Võrdluse alusStringStringBuffer
PõhilineStringobjekti pikkus on fikseeritud.StringBufferi pikkust saab suurendada.
MuudatusStringobjekt on muutumatu.StringBufferi objekt on muutuv.
ToimivusSee on konkatenatsiooni ajal aeglasem.See on konkatenatsiooni ajal kiirem.
MäluTarbib rohkem mälu.Kulub vähem mälu.
LadustamineString konstantne bassein.Heap mälu.

Stringi määratlus

„String” on Java-klass. Klassi String objektiks on fikseeritud pikkus ja kõige tähtsam meeles pidada, et stringklassi objekt on “muutumatu”. Kui olete stringi objekti vormindanud, ei saa te seda objekti uuesti muuta. Klassi String objekt salvestatakse String konstantses kogumis.

Mõelgem kõigepealt, et kui loote ühtegi stringit; luuakse tüübistringi objekt. Stringikonstandid on ka stringid.

 System.out.println ("Tere see on Teckpixi lahendus"); 

Ülaltoodud avalduses on string “Hello this is Teckpix Solution” stringi konstant.

Nüüd saame mõista stringi objekti sobivust näite abil.

 String str = uus string ("Teckpix"); str.concat ("Lahendus"); system.out.println (str); // väljund Teckpix 

Ülaltoodud koodis püüdsin ma siduda kaks stringi "Teckpix" ja "Solution". Nagu me teame, kui luuakse string, mis tähendab, et luuakse String tüüpi tüüp. Seega loob string “Teckpix” objekti, mille viide on määratud stringiobjektile “str”. Seejärel püüdsin ma ühendada teise stringi "Lahendus" stringiga "Teckpix", kasutades klassi String "concat ()" meetodit.

Kuna stringobjektid on muutumatud, ei muudeta stringiga Teckpix mingit muudatust ja uus string “Solution” loob stringi konstantse kogumi teise objekti. Kuid viide objektile “Lahendus” ei jää ühtegi objekti, mistõttu viide objektile Lahendus kaob, kuigi see on ikka veel stringi konstantses kogumis. Kuna objektile Teckpix ei tehta mingeid muudatusi, siis kui ma printin objekti, millele ma varem Teckpixi viitasin, trükib ainult stringi "Teckpix".

StringBufferi määratlus

Klass “StringBuffer” on klassi „String” peer klass. StringBufferi klass pakub stringidele rohkem funktsionaalsust. StringBufferi klassi objekt on muutuv, mis on selle objektiks võimalik muuta. StringBufferi objekti pikkus on kasvav. StringBufferi objektile või selle lõpus määratud sümbolite keskele võib sisestada märgid või alamrubriigid. StringBuffer eraldab ruumi 16 täiendavale tähemärgile, kui konkreetset pikkust ei nõuta.

Mõistkem StringBufferi objekti sobivust näite abil:

 StringBuffre Sb = uus StringBuffer ("Teckpix"); Sb.append ("Lahendus"); system.out.println (Sb); // Väljund Teckpix lahendus 

Nagu me teame, on StringBufferi objekt muutuv. Meetodi lisamine () muudab StringBufferi objekti Sb, millele algselt objekt „Teckpix” on varem määratud. Meetodi lisamine () lisab stringi kirjakeele “Teckpix” lõpuni uue stringi „Lahendus”. Nüüd, kui ma printin objekti Sb, prindib see modifitseeritud stringiobjekti “Teckpix Solutions”.

Stringi ja StringBufferi peamine erinevus

  1. Stringobjekti pikkus on fikseeritud, kuid StringBufferi objekti pikkust saab vajadusel suurendada.
  2. Stringobjekt on muutumatu, st selle objekti ei saa uuesti määrata, kuna StringBufferi objekt on muutuv.
  3. Stringobjekt on jõudluses aeglasem, samas kui StringBufferi objekt on kiirem.
  4. Stringobjekt tarbib rohkem mälu, StringBufferi objektid tarbivad vähem mälu.
  5. Stringobjektid salvestatakse püsivasse basseini, samas kui StringBufferi objektid salvestatakse kasumimällu.

Järeldus:

StringBufferi objektid pakuvad stringidele rohkem funktsionaalsust kui klass String. Seega on parem StringBufferiga töötada klassi String asemel.

Top