Porovnávacia tabuľka
Základ pre porovnanie | povrázok | StringBuffer |
---|---|---|
základné | Dĺžka objektu String je pevná. | Dĺžka StringBuffer môže byť zvýšená. |
modifikácie | Objekt reťazca je nemenný. | Objekt StringBuffer je meniteľný. |
výkon | Pri zlučovaní je pomalšia. | Je to rýchlejšie počas zlučovania. |
Pamäť | Spotreba viac pamäte. | Spotreba menej pamäte. |
skladovanie | Stringový 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.
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
- Dĺžka objektu String je pevná, ale dĺžka objektu StringBuffer môže byť v prípade potreby zvýšená.
- Stringový objekt je nemenný, tj jeho objekt nemôže byť znova priradený, zatiaľ čo objekt StringBuffer je nemenný.
- String objekt je pomalší výkon, zatiaľ čo objekt StringBuffer je rýchlejší.
- Objekt String spotrebuje viac pamäte, zatiaľ čo objekty StringBuffer spotrebúvajú menej pamäte.
- 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.