Rozdiel medzi triedou String a StringBuffer v Java

Autor: Laura McKinney
Dátum Stvorenia: 3 Apríl 2021
Dátum Aktualizácie: 15 Smieť 2024
Anonim
CS50 2015 - Week 5
Video: CS50 2015 - Week 5

Obsah


String a StringBuffer sú triedy, ktoré pracujú na reťazcoch. Trieda StringBuffer je trieda rovesníkov triedy String. Objekt triedy String má pevnú dĺžku. Objekt triedy StringBuffer je pestovateľný. Základný rozdiel medzi reťazcom String a StringBuffer je ten, že objekt triedy „String“ je nemeniteľný, Predmet triedy „StringBuffer“ premenlivý.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnaniepovrázokStringBuffer
základnéDĺžka objektu String je pevná.Dĺžku StringBuffer možno zväčšiť.
modifikácieReťazcový objekt je nemenný.Objekt StringBuffer je zameniteľný.
výkonPočas zreťazenia je pomalší.Počas zreťazenia je rýchlejšia.
PamäťSpotrebuje viac pamäte.Spotrebuje menej pamäte.
skladovanieReťazec s konštantným reťazcom.Hromadná pamäť.


Definícia reťazca

„String“ je trieda v jazyku Java. Objekt triedy String má pevnú dĺžku a najdôležitejšie je pamätať si, že objekt triedy String je „nemenný“. Po inicializácii objektu String už tento objekt nemôžete zmeniť. Objekt triedy String je uložený v konštantnej oblasti String.

Po prvé, pochopte, že kedykoľvek vytvoríte akýkoľvek reťazec; vytvoríte objekt typu string. Reťazcové reťazce sú tiež reťazcové objekty.

System.out.ln („Ahoj, toto je riešenie Teckpix“);

Vo vyššie uvedenom tvrdení je reťazec „Ahoj, toto je riešenie Teckpix“, reťazcová konštanta.

Poďme teraz pochopiť premenlivosť objektu String pomocou príkladu.

String str = new String ("Teckpix"); str.concat ( "roztok"); system.out.ln (str); // výstup Teckpix

Vo vyššie uvedenom kóde som sa pokúsil zreťaziť dva reťazce „Teckpix“ a „Solution“. Ako vieme vždy, keď sa vytvorí reťazec, znamená to, že sa vytvorí objekt typu String. Preto reťazec „Teckpix“ vytvára objekt, ktorého odkaz je priradený k reťazcovému objektu „str“. Ďalej som sa pokúsil zreťaziť ďalší reťazec „Riešenie“ reťazcom „Teckpix“ pomocou metódy „concat ()“ triedy String.


Pretože objekty String sú nemenné, nevykonáva sa žiadna zmena reťazca „Teckpix“ a nový reťazec „Solution“ vytvorí ďalší objekt v oblasti konštantných reťazcov. Odkaz na objekt „Riešenie“ však nie je zachytený žiadnym objektom, preto sa odkaz na objekt Riešenie stratí, hoci je stále prítomný v oblasti konštantných reťazcov. Keďže v objekte Teckpix sa neuskutočňuje žiadna zmena, keď som objektom, ku ktorému som už predtým priradil odkaz na Teckpix, len reťazec „Teckpix“.

Definícia StringBuffer

Trieda „StringBuffer“ je partnerská trieda triedy „String“. Trieda StringBuffer poskytuje reťazcom viac funkcií. Objekt triedy StringBuffer je premenlivý, preto je možné ho modifikovať. Dĺžka objektu StringBuffer je rastiteľná. Znaky alebo podreťazce môžete vložiť do stredu literálu reťazca, ktorý je priradený k objektu StringBuffer alebo na jeho koniec. StringBuffer prideľuje miesto pre 16 ďalších znakov, ak nie je požadovaná žiadna špecifická dĺžka.

Poďme porozumieť premenlivosti objektu StringBuffer pomocou príkladu:

StringBuffer Sb = nový StringBuffer („Teckpix“); Sb.append ( "roztok"); systém.ln.ln (Sb); // Výstupné riešenie Teckpix

Ako vieme, objekt StringBuffer je zameniteľný. Metóda append () modifikuje objekt StringBuffer Sb, ku ktorému sa pôvodne priradil odkaz na objekt „Teckpix“. Metóda append () pripojí nový reťazcový literál „Solution“ na koniec textového reťazca „Teckpix“. Teraz, keď budem objekt Sb, bude to modifikovaný reťazcový objekt „Teckpix Solutions“.

  1. Dĺžka objektu String je pevná, ale dĺžka objektu StringBuffer sa môže v prípade potreby zväčšiť.
  2. Objekt String je nemenný, t. J. Nemôže byť znova pridelený, zatiaľ čo objekt StringBuffer je zameniteľný.
  3. Výkon objektu String je pomalší, zatiaľ čo objekt StringBuffer je rýchlejší.
  4. Objekt String spotrebuje viac pamäte, zatiaľ čo objekty StringBuffer spotrebujú menej pamäte.
  5. Objekty String sa ukladajú v konštantnej oblasti, zatiaľ čo objekty StringBuffer sa ukladajú do haldy.

záver:

Objekty StringBuffer poskytujú reťazcom viac funkcií v porovnaní s triedou String. Preto je lepšie pracovať s StringBuffer namiesto triedy String.