Preporučeno, 2024

Izbor Urednika

Razlika između String i StringBuffer klase u Javi

String i StringBuffer su klase koje rade na nizovima. StringBuffer klasa je kolegijska klasa klase String. Objekt klase String je fiksne duljine. Objekt klase StringBuffer je rasipljiv. Osnovna razlika između String i StringBuffer je da je objekt klase "String" nepromjenjiv . Objekt klase "StringBuffer" promjenjiv .

Tablica usporedbe

Osnova za usporedbuNizStringBuffer
Osnovni, temeljniDuljina objekta String je fiksna.Dužina StringBuffera može se povećati.
ModifikacijaObjekt niza je nepromjenjiv.StringBuffer objekt je promjenjiv.
IzvođenjeTijekom spajanja je sporiji.To je brže tijekom ulančavanja.
MemorijaPotrošnja više memorije.Potrošnja manje memorije.
skladištenjeKonstantni niz nizova.Memorija hrpe.

Definicija niza

“String” je klasa u Javi. Objekt klase String je fiksne duljine, i što je najvažnije zapamtiti, objekt klase String je "nepromjenjiv". Nakon što inicijalizirate objekt String, ne možete ponovno izmijeniti taj objekt. Objekt klase String pohranjuje se u nizu konstantnih nizova.

Najprije ćemo shvatiti da, kad god stvorite bilo koji niz; stvarate objekt tipa string. Konstante niza su i stringovi.

 System.out.println ("Pozdrav ovo je Teckpix Solution"); 

U prethodnoj izjavi, niz "Hello this is Teckpix Solution" je konstanta niza.

Sada ćemo razumjeti promjenjivost objekta String uz pomoć primjera.

 String str = new String ("Teckpix"); str.concat ( "Solution"); system.out.println (str); // izlaz Teckpix 

U gornjem kodu, pokušao sam spojiti dva niza "Teckpix" i "Solution". Kao što znamo kada se stvori niz koji znači da je objekt tipa String kreiran. Dakle, niz "Teckpix" stvara objekt, čija se referenca dodjeljuje objektu stringa "str". Zatim sam pokušao spojiti drugi niz "Solution" s nizom "Teckpix" koristeći metodu "concat ()" klase String.

Budući da su String objekti nepromjenjivi, ne mijenja se niz "Teckpix", a novi niz "Solution" stvara drugi objekt u nizu konstantnih nizova. No, referenca na objekt “Rješenje” nije uhvaćen od strane bilo kojeg objekta, stoga se referenca na rješenje objekta gubi iako je još uvijek prisutna u nizu konstantnih nizova. Budući da se ne vrši izmjena objekta Teckpix, kad ispišem objekt str na koji sam ranije dodijelio referencu Teckpixa, ispisat će se samo niz "Teckpix".

Definicija StringBuffera

Klasa "StringBuffer" je kolegijska klasa klase "String". Klasa StringBuffer pruža više funkcionalnosti nizovima. Objekt klase StringBuffer je promjenjiv, a njegov se objekt može mijenjati. Duljina objekta StringBuffer je rasplodna. Možete umetnuti znakove ili podnizove u sredini niza slova koji je dodijeljen objektu StringBuffer ili na kraju njega. StringBuffer dodjeljuje prostor za 16 dodatnih znakova kada nije zatražena određena duljina.

Razmotrimo promjenjivost objekta StringBuffer uz pomoć primjera:

 StringBuffre Sb = novi StringBuffer ("Teckpix"); Sb.append ( "Solution"); system.out.println (Sb); // Izlaz Teckpix rješenja 

Kao što znamo, objekt StringBuffer je promjenjiv. Metoda append () modificira StringBuffer objekt Sb kojem je u početku dodijeljena referenca objekta ”Teckpix”. Metoda append () dodaje novu literalnu oznaku "Solution" na kraj niza slova "Teckpix". Kada ispišem objekt Sb, ispisat će modificirani objekt stringa “Teckpix Solutions”.

Ključna razlika između nizova i stringova

  1. Dužina objekta String je fiksna, ali se dužina objekta StringBuffer može povećati kada je to potrebno.
  2. String objekt je nepromjenjiv, tj. Njegov objekt se ne može ponovno rasporediti, dok je objekt StringBuffer promjenjiv.
  3. String objekt je sporije u izvedbi dok je StringBuffer objekt brži.
  4. String objekt troši više memorije, dok objekti StringBuffer troše manje memorije.
  5. String objekti pohranjeni su u konstantnom skupu, dok su objekti StringBuffer pohranjeni u memoriji hrpe.

Zaključak:

StringBuffer objekti pružaju više funkcionalnosti nizovima u usporedbi s klasom String. Stoga je poželjno raditi sa StringBuffer umjesto klase String.

Top