Recomandat, 2024

Alegerea Editorului

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

String și StringBuffer sunt clasele care operează pe șiruri de caractere. Clasa StringBuffer este clasa peer a clasei String. Obiectul clasei String este de lungime fixă. Obiectul clasei StringBuffer se poate dezvolta. Diferența de bază între String și StringBuffer este că obiectul clasei "String" este imuabil . Obiectul clasei "StringBuffer", care poate fi mutabil .

Diagramă de comparație

Bazele comparațieiŞirStringBuffer
De bazăLungimea obiectului String este fixată.Lungimea lui StringBuffer poate fi mărită.
ModificareObiectul șir este imuabil.Obiectul StringBuffer este mutable.
PerformanţăEste mai lent în timpul concatenării.Este mai rapid în timpul concatenării.
MemorieConsumă mai multă memorie.Consumă mai puțină memorie.
DepozitareString constant piscină.Memoria mormântului.

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". Odată ce ați inițializat obiectul String, nu puteți modifica din nou acest obiect. Obiectul clasei String este stocat în pool-ul constant al șirului.

Să înțelegem mai întâi că, ori de câte ori creați orice șir; creați un obiect de șir de tip. Constantele de șir sunt, de asemenea, obiecte șir.

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

În declaraț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 = String nou ("Teckpix"); str.concat ( "Solution"); sistem.out.println (str); // ieșire Teckpix 

În codul de mai sus, am încercat să concatenăm cele două șiruri "Teckpix" și "Solution". După cum știm de fiecare dată când este creat un șir care înseamnă că obiectul de tip String este creat. Prin urmare, șirul "Teckpix" creează un obiect, a cărui referință este atribuită obiectului șir "str". Apoi, am încercat să concatenăm un alt șir "Solution" cu șirul "Teckpix" utilizând metoda "concat ()" din clasa String.

Deoarece obiectele String sunt imuabile, nu se face nici o modificare la șirul "Teckpix", iar noul șir "Solution" creează un alt obiect în bazinul constant de șir. Dar, referința la obiectul "Solution" nu este prinsă de niciun obiect, prin urmare referința la obiect Soluția este pierdută, deși este încă prezentă în bazinul constant de șir. Deoarece nu se fac modificări pentru obiectul Teckpix, atunci când tipesc str a cărui referință la Teckpix i-am atribuit mai devreme, va fi imprimată numai șirul "Teckpix".

Definiția StringBuffer

Clasa "StringBuffer" este clasa peer a clasei "String". Clasa StringBuffer oferă mai multă funcționalitate șirurilor de caractere. Obiectul clasei StringBuffer este mutable, care poate fi modificat. Lungimea obiectului StringBuffer se poate mari. Puteți introduce caracterele sau substring-urile în mijlocul literalului șir care este atribuit obiectului StringBuffer sau la sfârșitul acestuia. StringBuffer alocă spațiu pentru 16 caractere suplimentare atunci când nu se solicită o lungime specifică.

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

 StringBuffre Sb = nou StringBuffer ("Teckpix"); Sb.append ( "Solution"); system.out.println (Sb); // Soluție de ieșire Teckpix 

După cum știm că obiectul StringBuffer este mutabil. Metoda append () modifică obiectul StringBuffer Sb la care inițial, referința obiectului "Teckpix" este atribuită mai devreme. Metoda append () adaugă noul cuvânt literal "Solution", la sfârșitul literalului "Teckpix". Acum, când imprimați obiectul Sb, va fi imprimat obiectul șir de caractere modificat "Soluții Teckpix".

Diferența cheie între coarda și StringBuffer

  1. Lungimea obiectului String este fixă, dar lungimea unui obiect al StringBuffer poate fi mărită când este necesar.
  2. Obiectul șir este imuabil, adică obiectul nu poate fi realocat din nou, în timp ce obiectul lui StringBuffer este mutabil.
  3. Obiectul șir este mai lent în performanță, în timp ce obiectul StringBuffer este mai rapid.
  4. Obiectul de șir consumă mai multă memorie, în timp ce obiectele StringBuffer consumă mai puțină memorie.
  5. Obiectele de șir sunt stocate într-o piscină constantă, în timp ce obiectele StringBuffer sunt stocate pe memoria heap.

Concluzie:

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

Top