Verschil tussen String en StringBuffer Class in Java

Schrijver: Laura McKinney
Datum Van Creatie: 3 April 2021
Updatedatum: 13 Kunnen 2024
Anonim
Differences between String  and StringBuffer
Video: Differences between String and StringBuffer

Inhoud


String en StringBuffer zijn beide de klassen die op strings werken. StringBuffer-klasse is de peer-klasse van de klasse String. Het object van de klasse String heeft een vaste lengte. Het object van de StringBuffer-klasse kan worden uitgebreid. Het fundamentele verschil tussen String en StringBuffer is dat het object van de klasse “String” is onveranderlijk. Het object van de klasse "StringBuffer" veranderlijk.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingDraadStringBuffer
basis-De lengte van het String-object is vast.De lengte van de StringBuffer kan worden vergroot.
WijzigingStringobject is onveranderlijk.StringBuffer-object kan worden gewijzigd.
PrestatieHet is langzamer tijdens aaneenschakeling.Het is sneller tijdens aaneenschakeling.
GeheugenVerbruikt meer geheugen.Verbruikt minder geheugen.
opslagruimteString constant zwembad.Heap Memory.


Definitie van String

"String" is een klasse op Java. Het object van de klasse String heeft een vaste lengte en het belangrijkste om te onthouden is dat het object van de String-klasse "onveranderlijk" is. Nadat u het String-object hebt geïnitialiseerd, kunt u dat object niet meer wijzigen. Het object van de klasse String wordt opgeslagen in String constant pool.

Laten we eerst begrijpen dat, telkens wanneer u een string maakt; u maakt een object van het type string. De tekenreeksconstanten zijn ook tekenreeksobjecten.

System.out.ln ("Hallo dit is de Teckpix-oplossing");

In bovenstaande verklaring is de tekenreeks "Hallo, dit is Teckpix Solution" een tekenreeksconstante.

Laten we nu de mutabiliteit van het String-object begrijpen aan de hand van een voorbeeld.

String str = new String ("Teckpix"); str.concat ( "Solution"); system.out.ln (str); // output Teckpix

In bovenstaande code probeerde ik de twee tekenreeksen "Teckpix" en "Solution" samen te voegen. Zoals we weten, wordt er telkens een string gemaakt, wat betekent dat het object van het type String wordt gemaakt. Daarom maakt de tekenreeks "Teckpix" een object, waarvan de verwijzing wordt toegewezen aan het tekenreeksobject "str". Vervolgens probeerde ik een andere string "Oplossing" samen te voegen met de string "Teckpix" met behulp van de methode "concat ()" van de klasse String.


Omdat de String-objecten onveranderlijk zijn, wordt de string "Teckpix" niet gewijzigd en maakt de nieuwe string "Solution" een ander object in de string-constante pool. Maar de verwijzing naar het object 'Oplossing' wordt door geen enkel object opgevangen, dus de verwijzing naar object Oplossing gaat verloren, hoewel deze nog steeds aanwezig is in de string constant pool. Aangezien er geen wijziging wordt aangebracht aan het object Teckpix, zal de tekenreeks 'Teckpix' alleen worden weergegeven als ik het object str waaraan ik eerder de referentie van Teckpix heb toegewezen.

Definitie van StringBuffer

De klasse "StringBuffer" is de peer-klasse van de klasse "String". De klasse StringBuffer biedt meer functionaliteit aan de tekenreeksen. Het object van de StringBuffer-klasse kan worden gewijzigd, omdat het object kan worden gewijzigd. De lengte van het StringBuffer-object kan worden uitgebreid. U kunt de tekens of subtekenreeksen invoegen in het midden van de letterlijke tekenreeks die is toegewezen aan het StringBuffer-object of aan het einde ervan. StringBuffer wijst ruimte toe voor 16 extra tekens wanneer er geen specifieke lengte wordt gevraagd.

Laten we de mutabiliteit van het StringBuffer-object begrijpen aan de hand van een voorbeeld:

StringBuffer Sb = new StringBuffer ("Teckpix"); Sb.append ( "Solution"); system.out.ln (Sb); // Uitvoer Teckpix-oplossing

Zoals we weten dat het StringBuffer-object kan worden gewijzigd. De methode append () wijzigt het StringBuffer-object Sb waaraan in eerste instantie de referentie van het object "Teckpix" eerder is toegewezen. De methode append () voegt de nieuwe tekenreeks letterlijk "Solution" toe aan het einde van de tekenreeks letterlijk "Teckpix". Als ik nu het object Sb heb, zal dit het gewijzigde tekenreeksobject "Teckpix Solutions" zijn.

  1. De lengte van het String-object is vast, maar de lengte van een object van StringBuffer kan indien nodig worden verlengd.
  2. String-object is onveranderlijk, d.w.z. het object kan niet opnieuw worden toegewezen, terwijl het object van StringBuffer kan worden gewijzigd.
  3. String-object presteert langzamer, terwijl het StringBuffer-object sneller is.
  4. String-object verbruikt meer geheugen, terwijl StringBuffer-objecten minder geheugen gebruiken.
  5. String-objecten worden opgeslagen in een constante pool, terwijl StringBuffer-objecten worden opgeslagen in heap-geheugen.

Gevolgtrekking:

StringBuffer-objecten bieden meer functionaliteit aan de tekenreeksen in vergelijking met de klasse String. Daarom verdient het de voorkeur om met StringBuffer te werken in plaats van klasse String.