Razlika između klase String i StringBuffer u Javi

Autor: Laura McKinney
Datum Stvaranja: 3 Travanj 2021
Datum Ažuriranja: 10 Svibanj 2024
Anonim
Differences between String  and StringBuffer
Video: Differences between String and StringBuffer

Sadržaj


Obje String i StringBuffer su klase koje djeluju na žice. StringBuffer klasa je vršnjačka klasa klase String. Objekt klase String je fiksne duljine. Objekt klase StringBuffer je obradiv. Osnovna razlika između String i StringBuffer je ta što je objekt klase "String" nepromjenljiv, Objekt klase "StringBuffer" promjenljiv.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuNizStringBuffer
Osnovni, temeljniDuljina String objekta je fiksna.Duljina StringBuffera može se povećati.
ModifikacijaString objekt je nepromjenjiv.Objekt StringBuffer je izmjenjiv.
IzvođenjeTo je sporije tijekom dodirivanja.Brže je tijekom spajanja.
MemorijaZauzima više memorije.Potroši manje memorije.
skladištenjeStalni stalni bazen.Heap Memory.


Definicija niza

"String" je klasa na Javi. Objekt klase String je fiksne duljine, i što je najvažnije zapamtiti, objekt klase String je "nepromjenjiv". Jednom kada inicijalizirate objekt String, ne možete ga ponovno mijenjati. Predmet klase String sprema se u stalni bazen String.

Da prvo razumemo to, kad god stvorite bilo koji niz; stvarate objekt tipa niza. Niskonačne konstante su također nizovi objekata.

System.out.ln ("Pozdrav ovo je Teckpix rješenje");

U gornjoj izjavi, niz "Zdravo ovo je Teckpix Solution" je konstantna nizova.

Sada ćemo razumjeti mogućnost izmjene predmeta String pomoću primjera.

String str = novi niz ("Teckpix"); str.concat ( "Solution"); system.out.ln (str); // izlaz Teckpix

U gornjem kôdu pokušao sam spojiti dvije žice "Teckpix" i "Solution". Kao što znamo kad god se stvori niz što znači da je objekt tipa String stvoren. Dakle, niz "Teckpix" stvara objekt, čija je referenca dodijeljena nizu objekata "str". Zatim sam pokušao spojiti novi niz "Solution" s nizom "Teckpix" koristeći metodu "concat ()" klase String.


Kako su String objekti nepromjenjivi, nije izvršena nikakva izmjena niza "Teckpix", a novi niz "Solution" stvara drugi objekt u konstantnom nizu stringova. No, referencu na objekt "Rješenje" ne zahvaća nijedan objekt, stoga je referenca na objekt Rješenje izgubljena, iako je i dalje prisutna u konstantnom nizu niza. Kako se na predmetu Teckpix ne vrši nikakva izmjena, kada objekt objekta kojem sam ranije dodijelio referencu Teckpix-a, bit će samo niz "Teckpix".

Definicija StringBuffer-a

Klasa "StringBuffer" je vršnjačka klasa klase "String". Klasa StringBuffer pruža više funkcionalnosti žicama. Objekt klase StringBuffer je promjenjiv, odnosno njegov se objekt može mijenjati. Duljina StringBuffer objekta može se koristiti. U sredinu literalnog niza koji je dodijeljen StringBuffer objektu ili na kraju njega možete umetnuti znakove ili podskupove. StringBuffer dodjeljuje prostor za 16 dodatnih znakova kada se ne zahtijeva određena duljina.

Razjasnimo nam izmjenjivost StringBuffer objekta uz pomoć primjera:

StringBuffer Sb = novi StringBuffer ("Teckpix"); Sb.append ( "Solution"); system.out.ln (Sb); // Izlazno rješenje Teckpix

Kao što znamo da je StringBuffer objekt moguće mijenjati. Metoda dodavanje () modificira StringBuffer objekt Sb na koji se u početku referenca objekta "Teckpix" dodjeljuje ranije. Metoda append () dodaje novi doslovni niz "Solution" na kraj literalnog niza "Teckpix". Sad kad predmetu Sb učinim modificirani string objekt "Teckpix Solutions".

  1. Duljina String objekta je fiksna, ali duljina objekta StringBuffer može se povećati prema potrebi.
  2. String objekt je nepromjenjiv, tj. Objekt se više ne može dodijeliti, dok je StringBuffer objekt moguće mijenjati.
  3. String objekt je sporiji u performansama, dok je objekt StringBuffer brži.
  4. String objekt troši više memorije dok StringBuffer objekti troše manje memorije.
  5. String objekti pohranjuju se u konstantni bazen dok se StringBuffer objekti pohranjuju u heap memoriji.

Zaključak:

Objekti StringBuffer pružaju više funkcija nizovima u odnosu na klasu String. Stoga je poželjnije raditi sa StringBuffer umjesto klase String.