Anbefalet, 2024

Redaktørens Valg

Forskel mellem streng og StringBuffer klasse i Java

String og StringBuffer begge er de klasser, der opererer på strenge. StringBuffer-klassen er klassen Strenge klasse. Formålet med strengklasse er af fast længde. Formålet med StringBuffer-klassen er voksbar. Den grundlæggende forskel mellem String og StringBuffer er, at objektet i "String" -klassen er uforanderligt . Formålet med klassen "StringBuffer" mutable .

Sammenligningstabel

Grundlag for sammenligningSnorStringBuffer
GrundlæggendeStrengeobjektets længde er fikset.Længden af ​​StringBuffer kan øges.
ModifikationStrengeobjektet er uforanderligt.StringBuffer objekt er mutable.
YdeevneDet er langsommere under sammenkobling.Det er hurtigere under sammenkobling.
HukommelseForbruger mere hukommelse.Giver mindre hukommelse.
OpbevaringString konstant pool.Heap Memory.

Definition af streng

"String" er en klasse i Java. Formålet med klassen String er af fast længde, og vigtigst at huske, er genstanden for String klasse "uforanderlig". Når du først initialiserer String-objektet, kan du ikke ændre objektet igen. Formålet med klassen String er gemt i String konstant pool.

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

 System.out.println ("Hej dette er Teckpix Solution"); 

I ovenstående sætning er strengen "Hej dette Teckpix Solution" en strengkonstant.

Lad os nu forstå String-objektets mutabilitet ved hjælp af et eksempel.

 String str = new String ("Teckpix"); str.concat ( "opløsning"); system.out.println (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 Stringtype oprettes. Derfor skaber strengen "Teckpix" et objekt, hvis reference er tildelt strengobjektet "str". Derefter forsøgte jeg at sammenkæde en anden streng "Solution" med strengen "Teckpix" ved hjælp af metoden "concat ()" af klassen String.

Da strengens objekter er uforanderlige, foretages der ingen modifikation af strengen "Teckpix", og den nye streng "Solution" opretter et andet objekt i strengkonstant puljen. Men referencen til objektet "Solution" er ikke fanget af noget objekt, derfor referencen til objektet Løsningen går tabt, selv om den stadig er til stede i strengenes konstante pool. Da der ikke foretages nogen modifikation af objektet Teckpix, vil jeg kun udskrive strengen "Teckpix", når jeg udskriver objektet str, som jeg tidligere har tildelt Teckpix-referencen til.

Definition af StringBuffer

Klassen "StringBuffer" er klasseklassen "String" i klasseklassen. Klassen StringBuffer giver mere funktionalitet til strengene. Formålet med StringBuffer-klassen er mutable, som dets objekt kan ændres. Længden af ​​StringBuffer-objektet er voksbar. Du kan indsætte tegn eller substrings i midten af ​​streng bogstavelig, der er tildelt StringBuffer objektet eller i slutningen af ​​det. StringBuffer tildeler plads til 16 ekstra tegn, når der ikke anmodes om en bestemt længde.

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

 StringBuffre Sb = ny StringBuffer ("Teckpix"); Sb.append ( "Løsning"); system.out.println (Sb); // Output Teckpix Solution 

Som vi ved, at StringBuffer-objektet kan ændres. Metoden vedhæft () ændrer StringBuffer-objektet Sb, til hvilket der oprindelig er referencen til objektet "Teckpix" tildelt tidligere. Metoden append () tilføjer den nye streng bogstavelig "Solution", til slutningen af ​​strengen bogstavelig "Teckpix". Nu, når jeg udskriver objektet Sb, vil det udskrive den modificerede strengobjekt "Teckpix Solutions".

Nøgleforskel mellem String og StringBuffer

  1. Stringobjektets længde er fast, men længden af ​​en genstand for StringBuffer kan øges, når det er nødvendigt.
  2. Strengeobjektet er uforanderligt, dvs. objektets genstand kan ikke omfordeles igen, mens genstanden for StringBuffer er mutable.
  3. Stringobjektet er langsommere i ydeevne, mens StringBuffer-objektet er hurtigere.
  4. Stringobjekt forbruger mere hukommelse, mens StringBuffer-genstande bruger mindre hukommelse.
  5. Stringobjekter lagres i en konstant pulje, mens StringBuffer-objekter er gemt på bunkehukommelse.

Konklusion:

StringBuffer-objekter giver mere funktionalitet til strengene i forhold til klassen String. Derfor er det bedst at arbejde med StringBuffer i stedet for klasse String.

Top