Vertailukaavio
Vertailun perusteet | jono | StringBuffer |
---|---|---|
perustiedot | String-objektin pituus on kiinteä. | StringBufferin pituus voi kasvaa. |
muutos | String-objekti on muuttumaton. | StringBuffer-objekti on muuttuva. |
Esitys | Se on hitaampi yhdistyksen aikana. | Se on nopeampi yhdistyksen aikana. |
Muisti | Kuluttaa enemmän muistia. | Kuluttaa vähemmän muistia. |
varastointi | String-vakio-allas. | Heap muisti. |
Merkkijonon määritelmä
“String” on Java-luokka. Luokan Stringin kohde on kiinteä, ja tärkeintä on muistaa, että String-luokan kohde on "muuttumaton". Kun olet alustanut String-objektin, et voi muuttaa tätä kohdetta uudelleen. Luokan String-objekti tallennetaan String-vakio-pooliin.
Ymmärtäkäämme ensin, että kun luot jokin merkkijono; luodaan tyypin merkkijonon objekti. Merkkijonot ovat myös merkkijonoja.
System.out.println ("Hei tämä on Teckpix-ratkaisu");
Yllä olevassa lausunnossa merkkijono “Hello this is Teckpix Solution” on merkkijonon vakio.
Ymmärtäkää nyt merkkijono-objektin mutaalisuus esimerkin avulla.
String str = uusi merkkijono ("Teckpix"); str.concat ( "ratkaisu"); system.out.println (str); // lähtö Teckpix
Yllä olevassa koodissa yritin yhdistää kaksi merkkijonoa "Teckpix" ja "Solution". Kuten tiedämme aina, kun luodaan merkkijono, luodaan merkkijonon tyyppi. Täten merkkijono “Teckpix” luo objektin, jonka viittaus on osoitettu merkkijonolle ”str”. Seuraavaksi yritin yhdistää toisen merkkijonon "Solution" merkkijonolla "Teckpix" käyttämällä luokan String "concat ()" -menetelmää.
Määritelmä StringBuffer
Luokka “StringBuffer” on luokan “String” vertaisluokka. Luokka StringBuffer tarjoaa merkkijonoille enemmän toimintoja. StringBuffer-luokan kohde on muuttuva, koska sen kohdetta voidaan muokata. StringBuffer-objektin pituus on kasvava. Voit lisätä merkkijonon tai merkkijonon merkkijonon keskelle, joka on määritetty StringBuffer-objektille tai sen lopussa. StringBuffer jakaa tilaa 16 lisämerkille, kun tiettyä pituutta ei pyydetä.
Ymmärtäkää StringBuffer-objektin mutaatiota esimerkin avulla:
StringBuffre Sb = uusi StringBuffer ("Teckpix"); Sb.append ( "ratkaisu"); system.out.println (Sb); // Lähtö Teckpix -ratkaisu
Kuten tiedämme, StringBuffer-objekti on muuttuva. Menetelmän lisäys () muuttaa StringBuffer-objektia Sb, johon aluksi kohteen Teckpix viite on määritetty aikaisemmin. Menetelmän lisäys () lisää uuden merkkijonon "Ratkaisu" merkkijonon "Teckpix" loppuun. Nyt kun tulostan kohteen Sb, se tulostaa muutetun merkkijonon "Teckpix Solutions".
Merkkijonon ja StringBufferin keskeinen ero
- Stringobjektin pituus on kiinteä, mutta StringBuffer-objektin kohteen pituus voi kasvaa tarvittaessa.
- String-objekti on muuttumaton eli sen objektia ei voi määrittää uudelleen, kun taas StringBufferin objekti on muuttuva.
- Stringobjekti on suorituskyvyssä hitaampi, kun taas StringBuffer-objekti on nopeampi.
- String-objekti kuluttaa enemmän muistia, kun taas StringBuffer-objektit kuluttavat vähemmän muistia.
- Stringobjektit tallennetaan vakio-altaaseen, kun taas StringBuffer-objektit tallennetaan kasanmuistiin.
johtopäätös:
StringBuffer-objektit tarjoavat merkkijonoille enemmän toimintoja kuin luokan String. Näin ollen on suositeltavaa työskennellä StringBufferin kanssa luokan Stringin sijasta.