Rekommenderas, 2019

Redaktionen

Skillnad mellan String och StringBuffer Class i Java

String och StringBuffer båda är klasserna som fungerar på strängar. StringBuffer-klassen är klassklassens klassklass. Syftet med String-klassen är av fast längd. Syftet med StringBuffer-klassen är växande. Den grundläggande skillnaden mellan String och StringBuffer är att objektet i klassen "String" är oföränderlig . Föremålet för klassen "StringBuffer" är mutabel .

Jämförelsediagram

Grunder för jämförelseSträngString
GrundläggandeLängden på strängobjektet är fixerat.StringBufferens längd kan ökas.
ModifieringSträngobjektet är oföränderligt.StringBuffer-objektet är muterbart.
PrestandaDet är långsammare under sammankoppling.Det är snabbare under sammankoppling.
MinneAnvänder mer minne.Använder mindre minne.
LagringString konstant pool.Heap Memory.

Definition av sträng

"String" är en klass i Java. Objektet av klasssträngen är av fast längd, och viktigast att komma ihåg, är strängklassens syfte "oföränderlig". När du har initierat String-objektet kan du inte ändra det objektet igen. Objektet för klasssträngen lagras i String konstant pool.

Låt oss först förstå det, när du skapar någon sträng; du skapar ett objekt av typen sträng. Strängkonstanterna är också strängobjekt.

 System.out.println ("Hej det här är Teckpix Solution"); 

I ovanstående uttalande är strängen "Hej det här Teckpix Solution" en strängkonstant.

Låt oss nu förstå String-objektets mutation med hjälp av ett exempel.

 String str = ny sträng ("Teckpix"); str.concat ( "Lösning"); system.out.println (str); // utgång Teckpix 

I ovanstående kod försökte jag sammanfatta de två strängarna "Teckpix" och "Solution". Som vi vet närhelst en sträng skapas betyder det att objektet av typen String skapas. Följaktligen skapar strängen "Teckpix" ett objekt vars referens är tilldelad strängobjektet "str". Därefter försökte jag sammanfoga en annan sträng "Lösning" med strängen "Teckpix" med metoden "concat ()" i klassen String.

Eftersom strängobjekten är oföränderliga görs ingen ändring till strängen "Teckpix" och den nya strängen "Solution" skapar ett annat objekt i strängkonstantpoolen. Men referensen till objektet "Solution" är inte fångad av något objekt, därmed hänvisningen till objektet Lösningen går förlorad, trots att den fortfarande finns i strängkonstant poolen. Eftersom ingen ändring görs på objektet Teckpix, kommer jag att skriva ut strängen "Teckpix" endast när jag skriver objektet str till vilket jag tilldelade Teckpix-referensen tidigare.

Definition av StringBuffer

Klassen "StringBuffer" är klassrummet "String" i klassen. Klassen StringBuffer ger mer funktionalitet till strängarna. Syftet med StringBuffer-klassen är mutable, vilket är dess objekt kan modifieras. Längden på StringBuffer-objektet är växande. Du kan infoga tecknen eller substrängarna i mitten av sträng bokstavligt som tilldelats StringBuffer-objektet eller i slutet av det. StringBuffer allokerar plats för 16 extra tecken när ingen specifik längd begärs.

Låt oss förstå mutationen av StringBuffer-objektet med hjälp av ett exempel:

 StringBuffre Sb = ny StringBuffer ("Teckpix"); Sb.append ( "Lösning"); system.out.println (Sb); // Output Teckpix Solution 

Som vi vet att StringBuffer-objektet är muterbart. Metoden bifogar () modifierar StringBuffer-objektet Sb till vilket i början hänvisningen till objektet "Teckpix" har tilldelats tidigare. Metoden append () lägger till den nya strängens bokstavliga "Solution", till slutet av strängens bokstavliga "Teckpix". Nu när jag skriver ut objektet Sb kommer det att skriva ut det modifierade strängobjektet "Teckpix Solutions".

Huvudskillnad mellan String och StringBuffer

  1. Strängobjektets längd är fast men längden på ett objekt av StringBuffer kan ökas vid behov.
  2. Strängobjektet är oföränderligt, dvs det är objektet kan inte omfördelas igen, medan StringBuffer-objektet är muterbart.
  3. Strängobjektet är långsammare i prestanda medan StringBuffer-objektet är snabbare.
  4. Stringobjektet förbrukar mer minne medan StringBuffer-objekt förbrukar mindre minne.
  5. Strängobjekt lagras i en konstant pool medan StringBuffer-objekt lagras i heapminne.

Slutsats:

StringBuffer-objekt ger mer funktionalitet till strängarna jämfört med klasssträngen. Det är därför att föredra att arbeta med StringBuffer istället för klasssträng.

Top