Erinevus keelpillide ja StringBuffer-klassi vahel Java-s

Autor: Laura McKinney
Loomise Kuupäev: 3 Aprill 2021
Värskenduse Kuupäev: 15 Mai 2024
Anonim
Erinevus keelpillide ja StringBuffer-klassi vahel Java-s - Tehnoloogia
Erinevus keelpillide ja StringBuffer-klassi vahel Java-s - Tehnoloogia

Sisu


String ja StringBuffer on mõlemad klassid, mis töötavad keelpillidel. StringBufferi klass on klassi String eakaaslaste klass. Keeluklassi objekt on kindla pikkusega. Klassi StringBuffer objekt on kasvav. Põhiline erinevus Stringi ja StringBufferi vahel on see, et klass “String” on muutumatu. Klassi “StringBuffer” objekt muutlik.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusKeelStringBuffer
PõhilineObjekti String pikkus on fikseeritud.StringBufferi pikkust saab suurendada.
ModifikatsioonKeelobjekt on muutumatu.Objekt StringBuffer on muudetav.
EtendusKonkatsioonimise ajal on see aeglasem.Liitmise ajal on see kiirem.
MäluTarbib rohkem mälu.Tarbib vähem mälu.
LadustamineString pidev bassein.Hunniku mälu.


Keele määratlus

“Keel” on Java klass. Klassikeele objekt on kindla pikkusega ja kõige tähtsam on meeles pidada, et keelpillide objekt on “muutumatu”. Kui olete stringi objekti initsialiseerinud, ei saa te seda objekti uuesti modifitseerida. Klassi String objekt salvestatakse Stringi püsivasse basseini.

Mõistagem kõigepealt seda, kui loote mis tahes stringi; loote tüüpi stringi objekti. Samuti on stringikonstandid stringiobjektid.

System.out.ln ("Tere, see on Teckpix lahendus");

Ülaltoodud avalduses on string "Tere, see on Teckpix lahendus" Stringi konstant.

Nüüd mõelgem näite abil Stringi objekti vahetatavust.

Keel str = uus keelpill ("Teckpix"); str.concat ("Lahendus"); system.out.ln (str); // väljund Teckpix

Ülaltoodud koodis proovisin ühendada kaks stringi “Teckpix” ja “Solution”. Nagu me teame, kui stringi luuakse, tähendab see stringi tüüpi objekti loomist. Seega loob stringi “Teckpix” objekt, mille viide omistatakse stringi objektile “str”. Järgmisena proovisin ühendada veel ühe stringi “Lahendus” stringiga “Teckpix”, kasutades klassi String meetodit “concat ()”.


Kuna stringi objektid on muutumatud, siis stringi “Teckpix” muudatusi ei tehta ja uus string “Solution” loob stringi konstantse kogumi teise objekti. Kuid ükski objekt ei hõlma viidet objektile „Lahendus”, seetõttu kaob viide objektilahendusele, ehkki see on endiselt stringis püsivas kogumis. Kuna objekti Teckpix ei muudeta, siis kui stringi, millele ma varem Teckpix viite määrasin, kasutatakse ainult stringi “Teckpix”.

StringBufferi määratlus

Klass “StringBuffer” on klassi “String” eakaaslaste klass. Klass StringBuffer pakub keelpillidele rohkem funktsioone. Klassi StringBuffer objekt on muutuv, st selle objekti saab muuta. Objekti StringBuffer pikkus on kasvav. Märke või alamstringi saab sisestada stringi keskosale, mis on määratud objektile StringBuffer, või selle lõppu. Kui konkreetset pikkust ei küsita, eraldab StringBuffer ruumi 16 täiendava märgi jaoks.

Mõistame näite abil objekti StringBuffer muudetavust:

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

Nagu me teame, on StringBufferi objekt muutuv. Meetodi lisad () muudavad StringBufferi objekti Sb, millele algselt omistatakse objekti viide Teckpix varem. Meetod append () lisab uue stringi literaali “Lahendus” stringi literaali “Teckpix” lõppu. Kui nüüd objektiks Sb, saab see modifitseeritud stringiobjekti “Teckpix Solutions”.

  1. Stringi objekti pikkus on fikseeritud, kuid StringBufferi objekti pikkust saab vajadusel suurendada.
  2. Stringiobjekt on muutumatu, st seda objekti ei saa uuesti määrata, kuna StringBufferi objekt on muutuv.
  3. Stringiobjekt on jõudluses aeglasem, samas kui StringBuffer-objekt on kiirem.
  4. Stringiobjekt tarbib rohkem mälu, samas kui StringBuffer-objektid kulutavad vähem mälu.
  5. Stringiobjekte hoitakse püsivas kogumis, samas kui StringBuffer-objekte hoitakse hunnikmälus.

Järeldus:

Objektid StringBuffer pakuvad stringidele rohkem funktsioone, võrreldes klassi String. Seega on parem kasutada klassi Stringi asemel StringBufferit.