Forskellen mellem String og StringBuffer Class i Java

Forfatter: Laura McKinney
Oprettelsesdato: 3 April 2021
Opdateringsdato: 15 Kan 2024
Anonim
Forskellen mellem String og StringBuffer Class i Java - Teknologi
Forskellen mellem String og StringBuffer Class i Java - Teknologi

Indhold


String og StringBuffer er begge de klasser, der opererer på strenge. StringBuffer-klassen er peer-klassen i klassen String. Formålet med strengklassen er af fast længde. Objektet med StringBuffer-klassen kan dyrkes. Den grundlæggende forskel mellem String og StringBuffer er, at genstanden for "String" -klassen er uforanderlige. Formålet med klassen “StringBuffer” foranderlig.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel

Grundlag for sammenligningSnorStringBuffer
GrundlæggendeLængden af ​​strengobjektet er fast.Længden af ​​StringBuffer kan øges.
ModifikationStrengeobjekt er uforanderligt.StringBuffer-objekt er mutabelt.
YdeevneDet er langsommere under sammenkædning.Det er hurtigere under sammenkædning.
HukommelseForbruger mere hukommelse.Forbruger mindre hukommelse.
OpbevaringString konstant pool.Heap Memory.


Definition af streng

“String” er en klasse i Java. Objektet med klassen streng er af fast længde, og vigtigst at huske, objektet med strengklassen er "uforanderlig". Når du initialiserer strengobjektet, kan du ikke ændre det objekt igen. Objektet med klassen String gemmes i String konstant pool.

Lad os først forstå, at når du opretter en streng; du opretter et objekt af typen streng. Strengekonstanterne er også strengobjekter.

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

I ovenstående udsagn er strengen "Hej dette er Teckpix Solution" en strengkonstant.

Lad os nu forstå stringensobjektets mutabilitet ved hjælp af et eksempel.

String str = ny streng ("Teckpix"); str.concat ( "opløsning"); system.out.ln (str); // output Teckpix

I ovenstående kode forsøgte jeg at sammenkæde de to strenge "Teckpix" og "Solution". Som vi ved, når der oprettes en streng, betyder det, at objektet af typen Streng oprettes. Derfor opretter strengen "Teckpix" et objekt, hvis reference er tildelt strengobjektet "str". Dernæst forsøgte jeg at sammenkæde en anden streng “Solution” med strengen “Teckpix” ved hjælp af metoden “concat ()” i klassen String.


Da strengobjekterne er uforanderlige, foretages der ingen ændringer af strengen "Teckpix", og den nye streng "Løsning" opretter et andet objekt i strengkonstantpuljen. Men henvisningen til objektet “Løsning” fanges ikke af noget objekt, hvorfor henvisningen til objekt Løsning går tabt, selvom den stadig er til stede i strengkonstantpuljen. Da der ikke foretages nogen ændring af objektet Teckpix, vil jeg kun strengen “Teckpix”, når jeg objektstrengen, som jeg tildelte referencen til Teckpix tidligere.

Definition af StringBuffer

Klassen “StringBuffer” er peer-klassen for klassen “String”. Klassen StringBuffer giver strengene mere funktionalitet. Objektet i StringBuffer-klassen er mutabelt, dvs. dets objekt kan ændres. Længden af ​​StringBuffer-objektet kan dyrkes. Du kan indsætte tegnene eller underdelene i midten af ​​den bogstavelige streng, der er tildelt StringBuffer-objektet eller i slutningen af ​​det. StringBuffer tildeler plads til 16 ekstra tegn, når der ikke kræves nogen specifik længde.

Lad os forstå mutingen af ​​StringBuffer-objektet ved hjælp af et eksempel:

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

Som vi ved, at StringBuffer-objektet er mutabelt. Metoden append () ændrer StringBuffer-objektet Sb, som oprindeligt henvises til objektet ”Teckpix” tidligere. Metoden append () tilføjer den nye streng bogstavelige "Løsning" til slutningen af ​​streng bogstavelige "Teckpix". Når jeg nu objektet Sb, vil det det ændrede strengobjekt "Teckpix Solutions".

  1. Længden af ​​strengobjektet er fast, men længden på et objekt i StringBuffer kan øges, når det er nødvendigt.
  2. String-objekt er uforanderligt, dvs. det kan ikke tildeles igen, mens StringBuffer-objektet kan ændres.
  3. Strengeobjekt er langsommere i ydelsen, mens StringBuffer-objektet er hurtigere.
  4. Strengobjekt bruger mere hukommelse, mens StringBuffer-objekter bruger mindre hukommelse.
  5. Strengobjekter gemmes i en konstant pulje, mens StringBuffer-objekter gemmes i bunkehukommelsen.

Konklusion:

StringBuffer-objekter giver strengene mere funktionalitet sammenlignet med klassen String. Derfor foretrækkes det at arbejde med StringBuffer i stedet for klasse String.