Razlika med String StringBuffer in StringBuilder na Javi

Ključna razlika - niz vs StringBuffer proti StringBuilder na Javi
 

String, StringBuffer in String Builder so razredi na Javi. String se pogosto uporablja v programiranju Java. Ko je ustvarjen objekt String, jih ni mogoče spremeniti. Vsakič, ko se struna spremeni, ustvari nov niz. Tudi če je povezava z obstoječim nizom, ustvari nov niz. To povzroči izgubo spomina. Za spreminjanje Stringa se uporabljajo razredi StringBuffer in StringBuilder v Javi. The ključna razlika med String, StringBuffer in StringBuilder na Javi je to String je razred za ustvarjanje predmeta tipa String, ki je zaporedje znakov, StringBuffer je razred, ki se uporablja za spreminjanje strun, ki zagotavlja varnost niti, StringBuilder pa razred, ki se uporablja za spreminjanje strun, ki ne zagotavljajo varnosti niti.

VSEBINA

1. Pregled in ključne razlike
2. Kaj je niz v Javi
3. Kaj je StringBuffer v Javi
4. Kaj je StringBuilder v Javi
5. Podobnosti String StringBuffer in StringBuilder na Javi
6. Primerjava ob strani - String vs StringBuffer proti StringBuilder na Javi v tabeli
7. Povzetek

Kaj je niz v Javi?

Razred niza je v paketu java.lang. Vsakič, ko programer ustvari niz, je predmet vrste String. Strune so nespremenljive, kar pomeni, da ko je predmet ustvarjen, ga ni mogoče spremeniti. Predmeti, ustvarjeni z uporabo razredov ovojev, kot so Integer, Byte, Float, Double, so prav tako nespremenljivi. Nizko besedilo je priloženo v dvojnih narekovajih. npr. "Pozdravljen, svet". Vsakič, ko je ustvarjen niz literal, Java navidezni stroj (JVM) preveri konstantno polje String. Če String obstaja, se vrne sklic na konstantni niz String. Če gre za nov niz, se ta predmet ustvari v konstantnem področju String.

Slika 01: Program Java z uporabo String, StringBuffer in StringBuilder

Glejte spodnji del kode.

String s1 = “Pozdravljeni”;

s1 = s1 + „svet“;

System.out.println (s1);

V prvi izjavi se s1 nanaša na "Hello" v konstantnem bazenu String. V drugi izjavi JVM ne spremeni obstoječega niza. Namesto tega ustvari nov niz kot "Hello World" in s1 se zdaj sklicuje na ta novi niz. Izhodni objekt "Hello" še vedno obstaja v konstantnem bazenu String.

Če obstaja koda, ki je,

String s1 = “Pozdravljeni”;

Niz s2 = s1;

s1, s2 se bosta sklicevala na String objekt "Hello".

Kaj je StringBuffer v Javi?

Razred StringBuffer se uporablja za spreminjanje predmetov String. Zato je mogoče te predmete spremeniti. StringBuffer definira štiri konstruktorje. StringBuffer (), StringBuffer (int size), StringBuffer (String str), StringBuffer (charSequence [] ch)

Glejte spodnjo kodo,

StringBuffer s1 = nov StringBuffer ("Pozdravljeni");

s1.append ("Svet");

System.out.println (s1);

V stavki 1 se s1 v množici nanaša na predmet "Hello". Predmet je spremenljiv, ker je ustvarjen s programom StringBuffer. V stavku 2 je "World" dodan istemu nizu "Hello".

String predmeti, ustvarjeni s razredom StringBuffer, lahko prihranijo pomnilnik. StringBuffer zagotavlja varnost niti, ker dve niti ne moreta dostopati do iste metode v razredu StringBuffer hkrati. Zmanjšanje varnosti navojev Učinkovitost StringBufferja. Razred StringBuffer vsebuje metode, kot so dodaj (), vstavi (), obrni (), zamenjaj ().

Kaj je StringBuilder v Javi?

Razred StringBuilder se uporablja za spreminjanje predmetov String. Zato je mogoče te predmete spremeniti. Funkcionalnost je podobna kot StringBuffer, vendar to ne zagotavlja varnosti niti. StringBuilder ima konstruktorje, kot so StringBuilder (), StringBuilder (int size), StringBuilder (String str).

Glej spodnjo kodo.

StringBuilder s1 = nov StringBuilder ("Pozdravljeni");

s1.append ("Svet");

System.out.println (s1);

V stavki 1 se s1 v množici nanaša na predmet "Hello". Predmet je spremenljiv, ker je ustvarjen s programom StringBuilder. V stavku 2 je "World" dodan istemu nizu "Hello". Ni ustvarjen popolnoma nov objekt String.

String predmeti, ustvarjeni s razredom StringBuilder, lahko prihranijo spomin. Za razliko od StringBuffer, StringBuilder ne zagotavlja varnosti niti, ker lahko dva niti hkrati dostopata do iste metode v razredu StringBuilder. Razred StringBuilder vsebuje metode, kot so dodaj (), vstavi (), obrni (), zamenjaj ().

Kakšna je podobnost med String, StringBuffer in StringBuilder na Javi?

  • Vse je mogoče uporabiti za ustvarjanje strun.

Kakšna je razlika med String StringBuffer in StringBuilder na Javi?

String proti StringBuffer proti StringBuilder

Vrvica Niz je razred Java, ki se uporablja za ustvarjanje predmeta tipa String, ki je zaporedje znakov.
StringBuffer StringBuffer je razred Java, ki se uporablja za ustvarjanje String predmetov, ki jih je mogoče spremeniti z varnostjo niti.
StringBuilder StringBuilder je razred, ki se uporablja za ustvarjanje nizkih predmetov, ki jih je mogoče spremeniti brez varnosti niti.
Spremenljivost
Vrvica Niz je nespremenljiv razred.
StringBuffer StringBuffer je spremenljiv razred.
StringBuilder StringBuilder je spremenljiv razred.
Varnost navojev
Vrvica Metode string so varne z nitmi.
StringBuffer Metode StringBuffer so varne z nitmi in so sinhronizirane.
StringBuilder Metode StringBuilder niso varne z navojem in niso sinhronizirane.
Izvedba
Vrvica Niz je hiter.
StringBuffer StringBuffer je počasen.
StringBuilder StringBuilder je hiter.

Povzetek - Niz vs StringBuffer proti StringBuilder na Javi 

String, StringBuffer in StringBuilder se zdijo enaki, vendar imajo različne pomene. Vse to so razredi Java. Razlika med String, StringBuffer in StringBuilder na Javi je ta, da je String razred za ustvarjanje predmeta tipa String, ki je niz znakov, StringBuffer je razred, ki se uporablja za spreminjanje strun in zagotavljanje varnosti niti, medtem ko je StringBuilder a razreda, ki se uporablja za spreminjanje strun, ki ne zagotavlja varnosti niti.

Prenesite PDF String vs StringBuffer proti StringBuilder v Javi

Lahko prenesete PDF različico tega članka in jo uporabljate za namene brez povezave, kot je navedeno v navodilu. Prenesite PDF različico tukaj Razlika med String StringBuffer in StringBuilder na Javi

Referenca:

1. "String proti StringBuffer proti StringBuilder." JournalDev, 30. julij 2017. Dostopno tukaj
2. "Java lačna." Razlika med razredi String, StringBuilder in StringBuffer s primerom: Java | Java lačna. Na voljo tukaj 
3.tutorialspoint.com. "Strune Java." Točka. Na voljo tukaj