Skirtumas tarp stygų ir „StringBuffer“ klasės „Java“

Autorius: Laura McKinney
Kūrybos Data: 3 Balandis 2021
Atnaujinimo Data: 3 Liepos Mėn 2024
Anonim
Differences between String  and StringBuffer
Video.: Differences between String and StringBuffer

Turinys


Stygos ir „StringBuffer“ yra tos klasės, kurios veikia styginiais. „StringBuffer“ klasė yra „String“ klasės bendraamžių klasė. Styginių klasės objektas yra fiksuoto ilgio. „StringBuffer“ klasės objektas yra peraugęs. Pagrindinis stygų ir „StringBuffer“ skirtumas yra tas, kad „Styginių“ klasės objektas yra nekintamas. Klasės „StringBuffer“ objektas kintantis.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasStygos„StringBuffer“
PagrindinisFiksuoto objekto ilgis yra fiksuotas.„StringBuffer“ ilgį galima padidinti.
ModifikacijaStyginis objektas yra nekintamas.„StringBuffer“ objektas yra keičiamas.
SpektaklisSusikaupus, tai lėčiau.Susikaupus, tai greičiau.
AtmintisSunaudoja daugiau atminties.Sunaudoja mažiau atminties.
SandėliavimasStyginių nuolatinis baseinas.Krūvos atmintis.


Stygos apibrėžimas

„Styga“ yra „Java“ klasė. Stygos klasės objektas yra fiksuoto ilgio, o svarbiausia atsiminti, kad Styginių klasės objektas yra „nekintamas“. Inicijavę „String“ objektą, jo nebegalite modifikuoti. Klasės „String“ objektas yra laikomas „String“ nuolatiniame baseine.

Pirmiausia supraskime tai, kai kuriate bet kurią eilutę; sukuriate tipo eilutės objektą. Styginių konstantos taip pat yra stygų objektai.

System.out.ln („Sveiki, tai yra„ Teckpix “sprendimas);

Aukščiau esančiame sakinyje eilutė „Sveiki, tai yra„ Teckpix “sprendimas“ yra Stygos konstanta.

Dabar pasinaudokime pavyzdžiu ir supraskime „String“ objekto keičiamumą.

Styginių str = nauja styga („Teckpix“); str.concat („Sprendimas“); sistema.out.ln (str); // išvesties „Teckpix“

Aukščiau pateiktame kode bandžiau sujungti dvi stygas „Teckpix“ ir „Solution“. Kaip mes žinome, kai sukuriama eilutė, tai reiškia, kad yra sukurtas eilutės tipo objektas. Taigi eilutė „Teckpix“ sukuria objektą, kurio nuoroda priskiriama eilutės objektui „str“. Tada aš bandžiau sujungti kitą eilutę „Sprendimas“ su styga „Teckpix“, naudodamas klasės eilutės metodą „concat ()“.


Kadangi stygų objektai yra nekintami, eilutė „Teckpix“ modifikuojama nedaroma, o naujoji eilutė „Sprendimas“ sukuria kitą objektą eilutės pastoviame baseine. Bet nuoroda į objektą „Sprendimas“ nėra įtraukta į jokį objektą, todėl nuoroda į objektą Sprendimas prarandama, nors vis dar yra eilutės pastoviame fonde. Kadangi objektas „Teckpix“ nekeičiamas, kai aš objekto str, kuriam anksčiau priskyriau „Teckpix“ nuorodą, bus naudojama tik eilutė „Teckpix“.

Apibrėžimas StringBuffer

„StringBuffer“ klasė yra bendraamžių klasės „String“ klasė. „StringBuffer“ klasė suteikia daugiau funkcijų styginiams. „StringBuffer“ klasės objektas yra keičiamas, tai yra, jo objektą galima modifikuoti. Objekto „StringBuffer“ ilgis yra ilginamas. Simbolius ar jų dalis galite įterpti į eilutės vidurio vidurį, kuris priskiriamas „StringBuffer“ objektui, arba jo pabaigoje. „StringBuffer“ skiria vietą 16 papildomų simbolių, kai nereikia nurodyti konkretaus ilgio.

Leiskite mums suprasti objekto „StringBuffer“ keičiamumą, pateikdami pavyzdį:

„StringBuffer Sb“ = naujas „StringBuffer“ („Teckpix“); Sb.append („Sprendimas“); sistema.out.ln (Sb); // Išvesties „Teckpix“ sprendimas

Kaip žinome, kad „StringBuffer“ objektas yra keičiamas. Metodas priedas () modifikuoja „StringBuffer“ objektą Sb, kuriam iš pradžių objekto nuoroda „Teckpix“ buvo priskiriama anksčiau. Metodas append () prideda naują styginių pažodą „Sprendimas“ prie styginių žodžio „Teckpix“ pabaigos. Dabar, kai aš objektą Sb, jis pakeis eilutės objektą „Teckpix Solutions“.

  1. „String“ objekto ilgis yra fiksuotas, tačiau prireikus „StringBuffer“ objekto ilgį galima padidinti.
  2. Styginis objektas yra nekintamas, t. Y. Jo objekto negalima vėl priskirti, tuo tarpu „StringBuffer“ objektas yra keičiamas.
  3. Styginio objekto veikimas yra lėtesnis, tuo tarpu „StringBuffer“ objektas yra greitesnis.
  4. Styginiai objektai sunaudoja daugiau atminties, tuo tarpu „StringBuffer“ objektai sunaudoja mažiau atminties.
  5. Styginiai objektai saugomi pastoviame baseine, tuo tarpu „StringBuffer“ objektai saugomi krūvos atmintyje.

Išvada:

„StringBuffer“ objektai suteikia daugiau funkcijų styginiams, palyginti su klasės eilute. Taigi, geriau dirbti su „StringBuffer“, o ne su „StringBuffer“.