Skillnaden mellan String och StringBuffer Class i Java

Författare: Laura McKinney
Skapelsedatum: 3 April 2021
Uppdatera Datum: 15 Maj 2024
Anonim
CS50 2015 - Week 5
Video: CS50 2015 - Week 5

Innehåll


String och StringBuffer är båda de klasser som verkar på strängar. StringBuffer-klassen är klassklassens klass String. Objektet med strängklass är av fast längd. Objektet med StringBuffer-klassen är odlingsbart. Den grundläggande skillnaden mellan String och StringBuffer är att objektet för klassen "String" är oföränderlig. Syftet med klassen "StringBuffer" föränderlig.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseSträngString
GrundläggandeSträngobjektets längd är fast.StringBuffers längd kan ökas.
ModifieringSträngobjekt är oföränderligt.StringBuffer-objektet är muterbart.
PrestandaDet går långsammare under sammankopplingen.Det är snabbare under sammanlänkning.
MinneKonsumerar mer minne.Konsumerar mindre minne.
LagringSträng konstant pool.Heap Memory.


Definition av sträng

“String” är en klass i Java. Objektet med klassen String är av fast längd, och viktigast att komma ihåg, objektet med String class är "oföränderligt". När du initialiserat String-objektet kan du inte ändra objektet igen. Objektet med klassen String lagras i String konstant pool.

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

System.out.ln ("Hej, det här är Teckpix-lösning");

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

Låt oss nu förstå strängobjektets mutabilitet med hjälp av ett exempel.

String str = new String ("Teckpix"); str.concat ( "Lösning"); system.out.ln (str); // utgång Teckpix

I koden ovan försökte jag sammanfoga de två strängarna "Teckpix" och "Solution". Som vi vet när en sträng skapas betyder det att objektet av typen String skapas. Därför skapar strängen "Teckpix" ett objekt vars referens tilldelas strängobjektet "str". Därefter försökte jag sammankoppla en annan sträng "Solution" med strängen "Teckpix" med metoden "concat ()" i klassen String.


Eftersom strängobjekten är oföränderliga görs ingen modifiering av strängen "Teckpix" och den nya strängen "Lösning" skapar ett annat objekt i strängkonstantpoolen. Men referensen till objektet "Lösning" fångas inte av något objekt, varför referensen till objektet Lösning förloras även om den fortfarande finns i strängkonstantpölen. Eftersom ingen modifiering görs på objektet Teckpix, kommer jag bara strängen "Teckpix" när jag objektet str till vilket jag tilldelade referensen till Teckpix tidigare.

Definition av StringBuffer

Klassen "StringBuffer" är gruppklassens klass "String". Klassen StringBuffer ger strängarna mer funktionalitet. Objektet i klassen StringBuffer är muterbara, det är dess objekt kan modifieras. StringBuffer-objektets längd kan växa. Du kan infoga tecken eller underlag i mitten av strängbokstav som tilldelas StringBuffer-objektet eller i slutet av det. StringBuffer tilldelar utrymme för ytterligare 16 tecken när ingen specifik längd begärs.

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

StringBuffer Sb = new StringBuffer ("Teckpix"); Sb.append ( "Lösning"); system.out.ln (Sb); // Output Teckpix Solution

Som vi vet att StringBuffer-objektet är muterbara. Metoden append () modifierar StringBuffer-objektet Sb till vilket initialt hänvisas till objektet ”Teckpix” tidigare. Metoden append () lägger till den nya strängbokstavliga ”Lösningen” till slutet av strängbokstavliga ”Teckpix”. Nu när jag objektet Sb kommer det modifierade strängobjektet "Teckpix Solutions".

  1. Strängobjektets längd är fast men längden på ett objekt i StringBuffer kan ökas vid behov.
  2. Strängobjektet är oföränderligt, det vill säga att det inte kan ändras om igen, medan StringBuffers objekt är muterbara.
  3. Stringobjekt har långsammare prestanda medan StringBuffer-objektet är snabbare.
  4. Stringobjekt förbrukar mer minne medan StringBuffer-objekt förbrukar mindre minne.
  5. Strängobjekt lagras i en konstant pool medan StringBuffer-objekt lagras i högminnet.

Slutsats:

StringBuffer-objekt ger strängarna mer funktionalitet jämfört med klassen String. Därför är det att föredra att arbeta med StringBuffer istället för klass String.