Sammenligningstabel
Grundlag for sammenligning | Snor | StringBuffer |
---|---|---|
Grundlæggende | Strengeobjektets længde er fikset. | Længden af StringBuffer kan øges. |
Modifikation | Strengeobjektet er uforanderligt. | StringBuffer objekt er mutable. |
Ydeevne | Det er langsommere under sammenkobling. | Det er hurtigere under sammenkobling. |
Hukommelse | Forbruger mere hukommelse. | Giver mindre hukommelse. |
Opbevaring | String 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.
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
- Stringobjektets længde er fast, men længden af en genstand for StringBuffer kan øges, når det er nødvendigt.
- Strengeobjektet er uforanderligt, dvs. objektets genstand kan ikke omfordeles igen, mens genstanden for StringBuffer er mutable.
- Stringobjektet er langsommere i ydeevne, mens StringBuffer-objektet er hurtigere.
- Stringobjekt forbruger mere hukommelse, mens StringBuffer-genstande bruger mindre hukommelse.
- 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.