Forskjellen mellom String og StringBuffer Class i Java

Forfatter: Laura McKinney
Opprettelsesdato: 3 April 2021
Oppdater Dato: 15 Kan 2024
Anonim
Constructors, Getters & Setters | Quick Tips for Beginner on Java Programming | Java Tutorial
Video: Constructors, Getters & Setters | Quick Tips for Beginner on Java Programming | Java Tutorial

Innhold


String og StringBuffer er begge klassene som opererer på strenger. StringBuffer-klassen er fagfelleklassen til klassen String. Objektet med strengklassen er av fast lengde. Objektet for StringBuffer-klassen kan utvides. Den grunnleggende forskjellen mellom String og StringBuffer er at objektet for “String” -klassen er uforanderlige. Objektet for klassen “StringBuffer” foranderlig.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningstringStringbuffer
grunn~~POS=TRUNCLengden på strengobjektet er fast.Lengden på StringBuffer kan økes.
modifiseringStrengeobjekt er uforanderlig.StringBuffer-objektet er mutabelt.
OpptredenDet går tregere under sammenkjøring.Det er raskere under sammenkjøring.
HukommelseForbruker mer minne.Forbruker mindre minne.
OppbevaringStreng konstant basseng.Heap Memory.


Definisjon av streng

“String” er en klasse i Java. Objektet for klassen streng er av fast lengde, og viktigst å huske, objektet med strengklassen er "uforanderlig". Når du initialiserer strengobjektet, kan du ikke endre objektet igjen. Objektet for klassen String er lagret i String konstant basseng.

La oss først forstå at når du oppretter en streng; du oppretter et objekt av typen streng. Strengkonstantene er også strengobjekter.

System.out.ln ("Hei, dette er Teckpix-løsning");

I uttalelsen over er strengen "Hello this is Teckpix Solution" en strengkonstant.

La oss nå forstå mutasjonen til strengobjektet ved hjelp av et eksempel.

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

I koden over prøvde jeg å slå sammen de to strengene “Teckpix” og “Solution”. Som vi vet når det opprettes en streng, betyr det at objektet av typen Streng opprettes. Derfor oppretter strengen "Teckpix" et objekt hvis referanse er tilordnet strengobjektet "str". Deretter prøvde jeg å koble sammen en annen streng “Solution” med strengen “Teckpix” ved å bruke metoden “concat ()” i klassen String.


Siden strengobjektene er uforanderlige, gjøres ingen endringer i strengen "Teckpix", og den nye strengen "Løsning" oppretter et annet objekt i strengkonstantens basseng. Men referansen til objektet “Løsning” blir ikke fanget av noe objekt, og referansen til objektet Løsning går tapt, selv om den fremdeles er til stede i strengens konstante basseng. Ettersom ingen modifikasjoner gjøres til objektet Teckpix, vil jeg bare strengen “Teckpix” når jeg objektstrengen som jeg tilordnet referansen til Teckpix tidligere.

Definisjon av StringBuffer

Klassen "StringBuffer" er fagfelleklassen for klassen "String". Klassen StringBuffer gir strengere funksjonalitet. Objektet i StringBuffer-klassen er mutabelt, det er dets objekt kan endres. Lengden på StringBuffer-objektet kan utvides. Du kan sette inn tegnene eller underdelene i midten av bokstavlig streng som er tilordnet StringBuffer-objektet eller på slutten av det. StringBuffer tildeler plass til 16 ekstra tegn når det ikke ønskes noen spesifikk lengde.

La oss forstå mutingen av StringBuffer-objektet ved hjelp av et eksempel:

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

Som vi vet at StringBuffer-objektet er mutabelt. Metoden vedlegg () endrer StringBuffer-objektet Sb som utgangspunktet er referansen til objektet "Teckpix" tildelt tidligere. Metoden append () legger den nye streng-bokstavelige "Solution" til slutten av streng-bokstavelige "Teckpix". Når jeg nå objektet Sb, vil det det endrede strengobjektet "Teckpix Solutions".

  1. Lengden på strengobjektet er fast, men lengden på en gjenstand til StringBuffer kan økes når det er nødvendig.
  2. Strengobjekt er uforanderlig, det vil si at objektet ikke kan tilordnes på nytt, mens objektet til StringBuffer er mutabelt.
  3. Strengeobjektet er tregere i ytelse, mens StringBuffer-objektet er raskere.
  4. Strengobjekt bruker mer minne, mens StringBuffer-objekter bruker mindre minne.
  5. Strengobjekter lagres i et konstant basseng, mens StringBuffer-objekter er lagret i haugminnet.

Konklusjon:

StringBuffer-objekter gir mer funksjonalitet til strengene sammenlignet med klassen String. Derfor er det å foretrekke å jobbe med StringBuffer i stedet for klasse String.