Skirtumas tarp stygų ir „StringBuffer“ klasės „Java“
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.
- Palyginimo diagrama
- Apibrėžimas
- Pagrindiniai skirtumai
- Išvada
Palyginimo diagrama
Palyginimo pagrindas | Stygos | „StringBuffer“ |
---|---|---|
Pagrindinis | Fiksuoto objekto ilgis yra fiksuotas. | „StringBuffer“ ilgį galima padidinti. |
Modifikacija | Styginis objektas yra nekintamas. | „StringBuffer“ objektas yra keičiamas. |
Spektaklis | Susikaupus, tai lėčiau. | Susikaupus, tai greičiau. |
Atmintis | Sunaudoja daugiau atminties. | Sunaudoja mažiau atminties. |
Sandėliavimas | Styginių 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“.
- „String“ objekto ilgis yra fiksuotas, tačiau prireikus „StringBuffer“ objekto ilgį galima padidinti.
- Styginis objektas yra nekintamas, t. Y. Jo objekto negalima vėl priskirti, tuo tarpu „StringBuffer“ objektas yra keičiamas.
- Styginio objekto veikimas yra lėtesnis, tuo tarpu „StringBuffer“ objektas yra greitesnis.
- Styginiai objektai sunaudoja daugiau atminties, tuo tarpu „StringBuffer“ objektai sunaudoja mažiau atminties.
- 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“.