Ero Java-kielissä ja StringBuffer-luokassa
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.
- Vertailutaulukko
- Määritelmä
- Keskeiset erot
- johtopäätös
Vertailutaulukko
Vertailun perusteet | jono | StringBuffer |
---|---|---|
perustiedot | String-objektin pituus on kiinteä. | StringBufferin pituutta voidaan lisätä. |
muutos | Merkkijono on muuttumaton. | StringBuffer-objekti on muutettavissa. |
Esitys | Se on hitaampi liittämisen aikana. | Se on nopeampi liittämisen aikana. |
Muisti | Kuluttaa enemmän muistia. | Kuluttaa vähemmän muistia. |
varastointi | Jatkuva 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".
- String-objektin pituus on kiinteä, mutta StringBuffer-objektin pituutta voidaan tarvittaessa kasvattaa.
- Merkkijonoobjekti on muuttumaton, ts. Sitä ei voida määrittää uudelleen, kun taas StringBufferin objekti on muutettavissa.
- Merkkijono on suorituskykyä hitaampi, kun taas StringBuffer-objekti on nopeampi.
- Merkkijono kuluttaa enemmän muistia, kun taas StringBuffer-objektit kuluttavat vähemmän muistia.
- 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.