Diferența dintre String și Clasa StringBuffer în Java

Autor: Laura McKinney
Data Creației: 3 Aprilie 2021
Data Actualizării: 17 Mai 2024
Anonim
Diferența dintre String și Clasa StringBuffer în Java - Tehnologie
Diferența dintre String și Clasa StringBuffer în Java - Tehnologie

Conţinut


String și StringBuffer sunt clasele care funcționează pe șiruri. Clasa StringBuffer este clasa de egal a clasei String. Obiectul clasei String este de lungime fixă. Obiectul clasei StringBuffer este cultivabil. Diferența de bază între String și StringBuffer este că obiectul clasei „String” este imuabil. Obiectul clasei „StringBuffer” mutabil.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieŞirStringBuffer
De bazăLungimea obiectului String este fixată.Lungimea StringBuffer poate fi mărită.
ModificareObiectul șir este imuabil.Obiectul StringBuffer este mutabil.
PerformanţăEste mai lent în timpul concatenării.Este mai rapid în timpul concatenării.
MemorieConsumă mai multă memorie.Consuma mai puțină memorie.
DepozitareString constant de bazin.Heap Memory.


Definiția String

„String” este o clasă în Java. Obiectul clasei String este de lungime fixă ​​și cel mai important de reținut, obiectul clasei String este „imuabil”. După ce inițializezi obiectul String, nu mai poți modifica acel obiect. Obiectul clasei String este stocat în poolul constant String.

Să înțelegem mai întâi asta, de fiecare dată când creați un șir; creați un obiect de tip string. Constanțele de șir sunt și obiecte de șir.

System.out.ln ("Bună ziua aceasta este soluția Teckpix");

În afirmația de mai sus, șirul „Hello this is Teckpix Solution” este o constantă String.

Acum să înțelegem mutabilitatea obiectului String cu ajutorul unui exemplu.

String str = new String („Teckpix”); str.concat ( "Solution"); system.out.ln (str); // ieșire Teckpix

În codul de mai sus, am încercat să concatenez cele două șiruri „Teckpix” și „Soluție”. După cum știm ori de câte ori este creat un șir, asta înseamnă că obiectul tipului String este creat. Prin urmare, șirul „Teckpix” creează un obiect, a cărui referință este atribuită obiectului șir „str”. În continuare, am încercat să concatenez un alt șir „Soluție” cu șirul „Teckpix” folosind metoda „concat ()” din clasa String.


Deoarece obiectele String sunt imuabile, nu se face nicio modificare a șirului „Teckpix” și noua șir „Soluție” creează un alt obiect în grupul constant de șiruri. Dar, referința la obiectul „Soluție” nu este surprinsă de niciun obiect, prin urmare, referința la obiectul Soluție se pierde, deși este încă prezentă în grupul constant de șiruri. Cum nu se face nicio modificare a obiectului Teckpix, atunci când am str. Obiectul căruia i-am atribuit referința Teckpix mai devreme, se va face doar șirul „Teckpix”.

Definiția StringBuffer

Clasa „StringBuffer” este clasa de egalitate a clasei „String”. Clasa StringBuffer oferă mai multe funcționalități șirurilor. Obiectul clasei StringBuffer este mutabil, care este obiectul său poate fi modificat. Lungimea obiectului StringBuffer este cultivabilă. Puteți introduce caracterele sau subcărțile în mijlocul literei string care este atribuit obiectului StringBuffer sau la sfârșitul acestuia. StringBuffer alocă spațiu pentru 16 caractere suplimentare atunci când nu este solicitată o lungime specifică.

Să înțelegem mutabilitatea obiectului StringBuffer cu ajutorul unui exemplu:

StringBuffer Sb = StringBuffer nou ("Teckpix"); Sb.append ( "Solution"); system.out.ln (Sb); // Ieșirea soluției Teckpix

După cum știm că obiectul StringBuffer este mutabil. Metoda anexă () modifică obiectul StringBuffer Sb căruia inițial, referința obiectului „Teckpix” este atribuită anterior. Metoda append () adaugă noul șir literal „Soluție”, la sfârșitul literalului șir „Teckpix”. Acum, când voi obiect Sb, va fi obiectul de șir modificat „Soluții Teckpix”.

  1. Lungimea obiectului String este fixă, dar lungimea unui obiect din StringBuffer poate fi crescută atunci când este necesar.
  2. Obiectul String este imuabil, adică obiectul nu poate fi reasignat din nou, în timp ce obiectul StringBuffer este mutabil.
  3. Obiectul String este mai lent în performanță, în timp ce, obiectul StringBuffer este mai rapid.
  4. Obiectul String consumă mai multă memorie în timp ce, obiectele StringBuffer consumă mai puțină memorie.
  5. Obiectele șiruri sunt stocate într-un pool constant, în timp ce, obiectele StringBuffer sunt stocate în memoria acumulatorului.

Concluzie:

Obiectele StringBuffer oferă mai multe funcționalități șirurilor în comparație cu clasa String. Prin urmare, este de preferat să lucrați cu StringBuffer în loc de String de clasă.