Aanbevolen, 2020

Editor'S Choice

Verschil tussen tekenreeks en StringBuffer-klasse in Java

String en StringBuffer zijn beide klassen die op tekenreeksen werken. StringBuffer-klasse is de peerklasse van de klasse String. Het object van de klasse String heeft een vaste lengte. Het object van de StringBuffer-klasse is te kweken. Het basisverschil tussen String en StringBuffer is dat het object van de klasse "String" onveranderbaar is . Het object van de klasse "StringBuffer" kan worden gewijzigd .

Vergelijkingstabel

Basis voor vergelijkingDraadStringBuffer
basis-De lengte van het object String is opgelost.De lengte van de StringBuffer kan worden verhoogd.
WijzigingString-object is onveranderbaar.StringBuffer-object kan worden gewijzigd.
PrestatieHet is langzamer tijdens aaneenschakeling.Het is sneller tijdens concatenatie.
GeheugenVerbruikt meer geheugen.Verbruikt minder geheugen.
opslagruimteString constant zwembad.Heap-geheugen.

Definitie van String

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

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

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

In bovenstaande verklaring is de tekenreeks "Hallo dit is Teckpix-oplossing" een tekenreeksconstante.

Laten we nu de veranderlijkheid van het object String met behulp van een voorbeeld begrijpen.

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

In de bovenstaande code heb ik geprobeerd de twee strings "Teckpix" en "Oplossing" samen te voegen. Zoals we weten wanneer een string wordt gemaakt, betekent dit dat het object van het type String is gemaakt. Vandaar dat de tekenreeks "Teckpix" een object maakt, waarvan de verwijzing is toegewezen aan het tekenreeksobject "str". Vervolgens probeerde ik een andere reeks "Oplossing" samen te voegen met de tekenreeks "Teckpix" met de methode "concat ()" van de klasse String.

Omdat de String-objecten niet te wijzigen zijn, wordt de string "Teckpix" niet gewijzigd en de nieuwe tekenreeks "Solution" maakt een ander object in de stringconstante-pool. Maar de verwijzing naar het object "Oplossing" wordt niet door een object vastgehouden, vandaar dat de verwijzing naar het object Oplossing verloren gaat hoewel het nog steeds aanwezig is in de reeksconstante pool. Aangezien er geen wijziging wordt aangebracht in het object Teckpix, drukt de string "Teckpix" alleen af ​​als ik de objectstr, waarnaar ik eerder de referentie van Teckpix heb toegewezen, afdruk.

Definitie van StringBuffer

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

Laten we de veranderlijkheid van het StringBuffer-object met behulp van een voorbeeld begrijpen:

 StringBuffre Sb = nieuwe StringBuffer ("Teckpix"); Sb.append ( "Solution"); system.out.println (Sb); // Output Teckpix-oplossing 

Zoals we weten, is het StringBuffer-object aanpasbaar. De methode append () wijzigt het StringBuffer-object Sb waarnaar aanvankelijk de referentie van het object "Teckpix" eerder is toegewezen. De methode addend () voegt de nieuwe string letterlijke "Oplossing" toe, aan het einde van de letterlijke "Teckpix". Wanneer ik nu het object Sb afdruk, zal het het gewijzigde stringobject "Teckpix Solutions" afdrukken.

Belangrijkste verschil tussen String en StringBuffer

  1. De lengte van het String-object is vastgesteld, maar de lengte van een object van StringBuffer kan worden verhoogd wanneer dat nodig is.
  2. String-object is onveranderlijk dwz het object kan niet opnieuw worden toegewezen terwijl het object van StringBuffer veranderbaar is.
  3. Object String is langzamer qua prestaties, terwijl het StringBuffer-object sneller is.
  4. String-object verbruikt meer geheugen, terwijl StringBuffer-objecten minder geheugen verbruiken.
  5. String-objecten worden opgeslagen in een constante pool terwijl StringBuffer-objecten worden opgeslagen in het heap-geheugen.

Conclusie:

StringBuffer-objecten bieden meer functionaliteit aan de tekenreeksen in vergelijking met de klasse String. Vandaar dat het de voorkeur heeft om met StringBuffer te werken in plaats van class String.

Top