Vergelijkingstabel
Basis voor vergelijking | Draad | StringBuffer |
---|---|---|
basis- | De lengte van het object String is opgelost. | De lengte van de StringBuffer kan worden verhoogd. |
Wijziging | String-object is onveranderbaar. | StringBuffer-object kan worden gewijzigd. |
Prestatie | Het is langzamer tijdens aaneenschakeling. | Het is sneller tijdens concatenatie. |
Geheugen | Verbruikt meer geheugen. | Verbruikt minder geheugen. |
opslagruimte | String 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.
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
- De lengte van het String-object is vastgesteld, maar de lengte van een object van StringBuffer kan worden verhoogd wanneer dat nodig is.
- String-object is onveranderlijk dwz het object kan niet opnieuw worden toegewezen terwijl het object van StringBuffer veranderbaar is.
- Object String is langzamer qua prestaties, terwijl het StringBuffer-object sneller is.
- String-object verbruikt meer geheugen, terwijl StringBuffer-objecten minder geheugen verbruiken.
- 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.