Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi reťazcami a triedou StringBuffer v jazyku Java

String a StringBuffer sú triedy, ktoré fungujú na reťazcoch. Trieda StringBuffer je trieda peer triedy String. Objekt triedy String má pevnú dĺžku. Objekt triedy StringBuffer je pestovateľný. Základným rozdielom medzi String a StringBuffer je to, že objekt triedy "String" je nemenný . Objekt triedy "StringBuffer" je nemenný .

Porovnávacia tabuľka

Základ pre porovnaniepovrázokStringBuffer
základnéDĺžka objektu String je pevná.Dĺžka StringBuffer môže byť zvýšená.
modifikácieObjekt reťazca je nemenný.Objekt StringBuffer je meniteľný.
výkonPri zlučovaní je pomalšia.Je to rýchlejšie počas zlučovania.
PamäťSpotreba viac pamäte.Spotreba menej pamäte.
skladovanieStringový konštantný pool.Pamäť haldy.

Definícia reťazca

"String" je trieda v jazyku Java. Cieľ triedy String má pevnú dĺžku a najdôležitejšie je pamätať, že objekt triedy String je "nemenný". Po inicializácii objektu String nemôžete tento objekt znova upravovať. Objekt triedy String je uložený v konštantnom súbore String.

Po prvé pochopíme, že keď vytvoríte akýkoľvek reťazec; vytvoríte objekt typu reťazec. Konštanty reťazca sú tiež reťazcové objekty.

 System.out.println ("Ahoj toto je Teckpix Solution"); 

Vo vyššie uvedenom upozornení reťazec "Ahoj toto je Teckpix Solution" je Stringová konštanta.

Teraz už s pomocou príkladu chápeme premenlivosť objektu String.

 String str = nový reťazec ("Teckpix"); str.concat ( "roztok"); system.out.println (str); // výstup Teckpix 

Vo vyššie uvedenom kóde som sa snažil spojiť dva reťazce "Teckpix" a "Solution". Ako vieme vždy, keď je vytvorený reťazec, znamená to, že je vytvorený objekt typu String. Preto reťazec "Teckpix" vytvorí objekt, ktorého referencia je priradená reťazcovému objektu "str". Ďalej som sa pokúsil spojiť ďalší reťazec "Solution" s reťazcom "Teckpix" pomocou metódy "concat ()" triedy String.

Vzhľadom na to, že objekt String je nemenný, nie je vykonaná žiadna zmena reťazca "Teckpix" a nový reťazec "Solution" vytvorí iný objekt v konštantnom súbore reťazcov. Odkaz na objekt "Riešenie" však nie je zachytený žiadnym objektom, preto odkaz na objekt Riešenie sa stratilo, aj keď je stále prítomné v konštantnom súbore reťazcov. Keďže objekt Teckpix sa nezmení, pri tlači objektu str, ktorému som už predtým priradil odkaz Teckpix, vytlačí iba reťazec "Teckpix".

Definícia StringBuffer

Trieda "StringBuffer" je peer trieda triedy "String". Trieda StringBuffer poskytuje reťazcom viac funkčnosti. Cieľ triedy StringBuffer je meniteľný, jeho predmet môže byť zmenený. Dĺžka objektu StringBuffer je plodná. Môžete vložiť znaky alebo podčiarknuté reťazce do stredu reťazca literal, ktorý je priradený objektu StringBuffer alebo na konci. StringBuffer prideľuje miesto pre ďalších 16 znakov, ak nie je požadovaná žiadna špecifická dĺžka.

Chápeme premenlivosť objektu StringBuffer pomocou príkladu:

 StringBuffre Sb = nový StringBuffer ("Teckpix"); Sb.append ( "roztok"); system.out.println (Sb); // Výstupné riešenie Teckpix 

Ako vieme, že objekt StringBuffer je meniteľný. Metoda append () modifikuje objekt StringBuffer Sb, ku ktorému je pôvodne priradená referencia objektu "Teckpix". Metoda append () pripojí nový reťazec literál "Riešenie" na koniec reťazca literál "Teckpix". Teraz, keď vytlačím objekt Sb, vytlačí upravený objektový reťazec "Teckpix Solutions".

Kľúčový rozdiel medzi reťazcom a StringBufferom

  1. Dĺžka objektu String je pevná, ale dĺžka objektu StringBuffer môže byť v prípade potreby zvýšená.
  2. Stringový objekt je nemenný, tj jeho objekt nemôže byť znova priradený, zatiaľ čo objekt StringBuffer je nemenný.
  3. String objekt je pomalší výkon, zatiaľ čo objekt StringBuffer je rýchlejší.
  4. Objekt String spotrebuje viac pamäte, zatiaľ čo objekty StringBuffer spotrebúvajú menej pamäte.
  5. String objekty sú uložené v konštantnom bazéne, zatiaľ čo objekty StringBuffer sú uložené v pamäti haldy.

záver:

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

Top