Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Stygos ir StringBuffer klasės skirtumas Java

String ir StringBuffer abu yra klasės, kurios veikia eilutėse. StringBuffer klasė yra klasės eilutės klasė. Styginių klasės objektas yra fiksuoto ilgio. StringBuffer klasės objektas yra išaugęs. Pagrindinis skirtumas tarp „String“ ir „StringBuffer“ yra tas, kad „String“ klasės objektas yra nekintamas . Klasės „StringBuffer“ objektas kinta .

Palyginimo diagrama

Palyginimo pagrindasStringStringBuffer
PagrindinisStyginių objekto ilgis yra fiksuotas.StringBuffer ilgis gali būti padidintas.
ModifikacijaStyginių objektas yra nekintamas.StringBuffer objektas yra keičiantis.
SpektaklisSusiliejimo metu jis yra lėtesnis.Tai greitesnė per susiejimą.
AtmintisVartoja daugiau atminties.Vartoja mažiau atminties.
SaugojimasStygos pastovus baseinas.Žuvo atmintis.

Stygos apibrėžimas

„String“ yra „Java“ klasė. Klasės stygos objektas yra fiksuoto ilgio ir, svarbiausia, prisiminti, styginių klasės objektas yra „nekintamas“. Kai inicijuojate Styginių objektą, negalite dar kartą keisti šio objekto. Klasės eilutės objektas yra saugomas eilutės eilutėje.

Pirmiausia suprasime, kad, kurdami bet kokią eilutę; sukuriate tipo eilutės objektą. Styginių konstantos taip pat yra styginių objektai.

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

Pirmiau pateiktame sakinyje eilutė „Hello this is Teckpix Solution“ yra eilutės konstanta.

Dabar leiskite mums suprasti eilutės objekto mutiškumą naudojant pavyzdį.

 String str = nauja eilutė ("Teckpix"); str.concat („Sprendimas“); system.out.println (str); // produkcija Teckpix 

Anksčiau pateiktu kodu bandžiau susieti dvi eilutes „Teckpix“ ir „Solution“. Kaip žinome, kai sukuriama eilutė, tai reiškia, kad sukuriamas String tipo tipas. Taigi, eilutė „Teckpix“ sukuria objektą, kurio nuoroda priskirta styginių objektui „str“. Be to, bandžiau susieti kitą eilutę „Sprendimas“ su eilute „Teckpix“, naudojant „Strat“ klasės „concat ()“ metodą.

Kadangi styginių objektai yra nepakeičiami, eilutės „Teckpix“ modifikacija nepadaryta, o nauja eilutė „Solution“ sukuria kitą objektą eilutės pastoviame baseine. Tačiau nuoroda į objektą „Sprendimas“ nėra sugriebta jokiu objektu, todėl nuoroda į objektą Sprendimas prarandama, nors ji vis dar yra eilutės pastoviame baseine. Kadangi objektas Teckpix nekeičiamas, kai spausdinu objektą, kuriam anksčiau priskyriau Teckpix nuorodą, spausdinuu tik eilutę „Teckpix“.

StringBuffer apibrėžimas

Klasė „StringBuffer“ yra klasės „String“ klasė. StringBuffer klasė suteikia daugiau funkcijų styginiams. StringBuffer klasės objektas yra keičiantis, kuris gali būti pakeistas. StringBuffer objekto ilgis yra išaugęs. Jūs galite įterpti simbolius ar antraštes eilutės raidės viduryje, kuris yra priskirtas StringBuffer objektui arba jo pabaigoje. StringBuffer skiria erdvę 16 papildomų simbolių, kai nėra prašoma konkretaus ilgio.

Suprasime StringBuffer objekto tinkamumą naudojant pavyzdį:

 StringBuffre Sb = naujas StringBuffer ("Teckpix"); Sb.append („Sprendimas“); system.out.println (Sb); // Išvesties „Teckpix“ sprendimas 

Kaip žinome, StringBuffer objektas yra keičiantis. Metodas prideda () modifikuoja StringBuffer objektą Sb, į kurį iš pradžių priskiriamas objekto „Teckpix“ nuoroda. Metodo priedas () prideda naują eilutę „Sprendimas“ iki eilutės „Teckpix“ eilutės pabaigos. Dabar, kai atspausdinu objektą Sb, jis išspausdins modifikuotą styginių objektą „Teckpix Solutions“.

Pagrindinis skirtumas tarp eilutės ir StringBuffer

  1. Styginių objekto ilgis yra fiksuotas, bet, jei reikia, gali būti padidintas StringBuffer objekto ilgis.
  2. Styginių objektas yra nekintamas, ty jo objektas negali būti vėl skiriamas, o StringBuffer objektas yra keičiantis.
  3. Styginių objektas yra lėtesnis, o StringBuffer objektas yra greitesnis.
  4. Styginių objektas sunaudoja daugiau atminties, o StringBuffer objektai sunaudoja mažiau atminties.
  5. Styginių objektai yra saugomi pastoviame baseine, o StringBuffer objektai yra saugomi krūvos atmintyje.

Išvada:

StringBuffer objektai suteikia daugiau funkcijų styginiams, palyginti su klasės eilute. Todėl pageidautina dirbti su StringBuffer vietoj klasės eilutės.

Top