Ero Java-kielissä ja StringBuffer-luokassa

Kirjoittaja: Laura McKinney
Luomispäivä: 3 Huhtikuu 2021
Päivityspäivä: 18 Saattaa 2024
Anonim
Ero Java-kielissä ja StringBuffer-luokassa - Tekniikka
Ero Java-kielissä ja StringBuffer-luokassa - Tekniikka

Sisältö


Jousi ja StringBuffer ovat molemmat luokkia, jotka toimivat kielillä. StringBuffer-luokka on String-luokan vertaisluokka. String-luokan esine on kiinteä. StringBuffer-luokan kohde on grovable. Perusero Stringin ja StringBufferin välillä on, että ”String” -luokan kohde on muuttumaton. Luokan “StringBuffer” esine vaihteleva.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetjonoStringBuffer
perustiedotString-objektin pituus on kiinteä.StringBufferin pituutta voidaan lisätä.
muutosMerkkijono on muuttumaton.StringBuffer-objekti on muutettavissa.
EsitysSe on hitaampi liittämisen aikana.Se on nopeampi liittämisen aikana.
MuistiKuluttaa enemmän muistia.Kuluttaa vähemmän muistia.
varastointiJatkuva vakio-allas.Kasa muisti.


Määritelmä Merkkijono

“String” on Java-luokka. Merkkijono-luokan esine on kiinteän pituinen, ja mikä tärkeintä muistaa, merkkijono-luokan esine on ”muuttumaton”. Kun olet alustanut merkkijonoobjektin, et voi muokata objektia uudelleen. Luokan String kohde tallennetaan String vakio-altaaseen.

Ymmärrämme ensin, että kun luot minkä tahansa merkkijonon; luot objektityyppisen merkkijonon objektin. Merkkijonovakiot ovat myös merkkijonoobjekteja.

System.out.ln ("Hei tämä on Teckpix-ratkaisu");

Yllä olevassa lausunnossa merkkijono ”Hei tämä on Teckpix-ratkaisu” on merkkijonovakio.

Nyt ymmärretään String-esineen vaihdettavuus esimerkin avulla.

String str = uusi merkkijono ("Teckpix"); str.concat ( "ratkaisu"); system.out.ln (str); // lähtö Teckpix

Yllä olevassa koodissa yritin ketjuttaa kaksi jouset “Teckpix” ja “Solution”. Kuten tiedämme aina kun merkkijono luodaan, se tarkoittaa String-tyyppistä objektia. Näin ollen merkkijono “Teckpix” luo objektin, jonka viittaus on annettu merkkijonoobjektille “str”. Seuraavaksi yritin ketjuttaa toisen merkkijonon “Solution” merkkijonoilla “Teckpix” luokan String menetelmällä “concat ()”.


Koska merkkijonoobjektit ovat muuttumattomia, merkkijonoon ”Teckpix” ei tehdä muutoksia, ja uusi merkkijono ”Ratkaisu” luo toisen objektin merkkijonovakioaltaan. Mutta viittaus objektiin "Ratkaisu" ei kata yhtäkään objektia, joten viittaus Objektiratkaisuun katoaa, vaikka se on edelleen läsnä merkkijonovakiossa. Koska objektiin Teckpix ei tehdä muutoksia, kun objektin str, johon olen aiemmin antanut viitenumeron Teckpix, vain merkkijono “Teckpix”.

Määritelmä StringBuffer

Luokka “StringBuffer” on luokan “String” vertaisluokka. Sarja StringBuffer tarjoaa enemmän toimintoja kielille. StringBuffer-luokan objekti on muuttuva, eli sen objektia voidaan muokata. StringBuffer-objektin pituus on leikattava. Voit lisätä merkit tai osajonot merkkijonon keskelle, joka on määritetty StringBuffer-objektille, tai sen loppuun. StringBuffer varaa tilaa 16 lisämerkille, kun tiettyä pituutta ei vaadita.

Ymmärtäkäämme StringBuffer-objektin vaihdettavuuden esimerkin avulla:

StringBuffer Sb = uusi StringBuffer ("Teckpix"); Sb.append ( "ratkaisu"); system.out.ln (Sb); // Teckpix-ratkaisu

Kuten tiedämme, että StringBuffer-objekti on muutettavissa. Menetelmäliite () muuttaa StringBuffer-objektia Sb, jolle alunperin kohteen "Teckpix" viite osoitetaan aikaisemmin. Menetelmä append () lisää uuden merkkijono "Solution" merkkijonon "Teckpix" loppuun. Nyt kun olen objekti Sb, se muuttaa muokatun merkkijono "Teckpix Solutions".

  1. String-objektin pituus on kiinteä, mutta StringBuffer-objektin pituutta voidaan tarvittaessa kasvattaa.
  2. Merkkijonoobjekti on muuttumaton, ts. Sitä ei voida määrittää uudelleen, kun taas StringBufferin objekti on muutettavissa.
  3. Merkkijono on suorituskykyä hitaampi, kun taas StringBuffer-objekti on nopeampi.
  4. Merkkijono kuluttaa enemmän muistia, kun taas StringBuffer-objektit kuluttavat vähemmän muistia.
  5. Merkkijonoobjektit tallennetaan vakiovarastoon, kun taas StringBuffer-objektit tallennetaan kasaan muistiin.

johtopäätös:

StringBuffer-objektit tarjoavat merkkijonoille enemmän toimintoja verrattuna luokan merkkijonoihin. Siksi on parempi työskennellä StringBufferin kanssa luokan String sijaan.