Võtmete erinevus – String vs StringBuffer vs StringBuilder Javas
String, StringBuffer ja String Builder on Java klassid. Stringi kasutatakse Java programmeerimises laialdaselt. Kui stringi objekt on loodud, pole neid võimalik muuta. Iga kord, kui stringi muudetakse, loob see uue stringi. Isegi kui see on konkatenatsioon olemasoleva stringiga, loob see uue stringi. See põhjustab mälu raiskamist. Stringi muutmiseks kasutatakse Java klasse StringBuffer ja StringBuilder. Peamine erinevus Stringi, StringBufferi ja StringBuilderi vahel Javas on see, et String on klass, mis loob objekti tüüpi String, mis on tähemärkide jada, StringBuffer on klass, mida kasutatakse stringide muutmiseks, mis tagab lõime turvalisuse, ja StringBuilder on klass, mida kasutatakse stringide muutmiseks, mis ei paku keerme turvalisust.
Mis on Javas String?
Stringiklass on paketis java.lang. Iga kord, kui programmeerija loob stringi, on see String tüüpi objekt. Stringid on muutumatu tähendusega, kui objekt on loodud, ei saa seda muuta. Muutumatud on ka objektid, mis on loodud ümbrisklassidega, nagu Integer, Byte, Float, Double. Stringliteraal on ümbritsetud jutumärkidega. nt. "Tere, Maailm". Iga kord, kui stringi literaal luuakse, kontrollib Java virtuaalmasin (JVM) stringi konstantide kogumit. Kui string on olemas, tagastatakse viide stringi konstandikogumile. Kui see on uus string, luuakse see objekt stringi konstantide kogumisse.
Joonis 01: Java programm, mis kasutab Stringi, StringBufferit ja StringBuilderit
Vaadake allolevat koodilõiku.
String s1="Tere";
s1=s1 + "maailm";
System.out.println(s1);
Esimeses lauses viitab s1 "Tere" stringi konstandikogumis. Teises avalduses ei muuda JVM olemasolevat stringi. Selle asemel loob see uue stringi nimega "Tere maailm" ja s1 viitab nüüd sellele uuele stringile. Väljuv objekt "Tere" on stringi konstantide kogumis endiselt olemas.
Kui on olemas kood, mis on
String s1="Tere";
String s2=s1;
s1, s2 viitavad mõlemad stringobjektile "Tere".
Mis on Javas StringBuffer?
StringBuffer klassi kasutatakse String-objektide muutmiseks. Seetõttu saab neid objekte muuta. StringBuffer määratleb neli konstruktorit. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Vaadake allolevat koodi, StringBuffer s1=new StringBuffer(“Tere”);
s1.append(“Maailm”);
System.out.println(s1);
Avalduses 1 viitab s1 kuhjas olevale "Tere" objektile. Objekt on muudetav, kuna see on loodud StringBufferi abil. Lauses 2 lisatakse "Maailm" samale "Tere" stringobjektile.
StringBuffer klassiga loodud stringobjektid võivad säästa mälu. StringBuffer pakub lõime turvalisust, kuna kaks lõime ei pääse samaaegselt samale StringBuffer klassi meetodile juurde. Lõime turvalisus vähendab StringBufferi jõudlust. Klass StringBuffer sisaldab selliseid meetodeid nagu append(), insert(), reverse(), asenda().
Mis on StringBuilder Javas?
StringBuilderi klassi kasutatakse String-objektide muutmiseks. Seetõttu saab neid objekte muuta. Funktsionaalsus on sarnane StringBufferiga, kuid see ei taga lõime turvalisust. StringBuilderil on sellised konstruktorid nagu StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Vaadake allolevat koodi.
StringBuilder s1=uus StringBuilder("Tere");
s1.append(“Maailm”);
System.out.println(s1);
Avalduses 1 viitab s1 kuhjas olevale "Tere" objektile. Objekt on muudetav, kuna see on loodud StringBuilderi abil. Lauses 2 lisatakse "Maailm" samale "Tere" stringobjektile. Täiesti uut String-objekti ei looda.
StringBuilder klassiga loodud stringobjektid võivad säästa mälu. Erinev alt StringBufferist ei paku StringBuilder lõime turvalisust, kuna kaks lõime pääsevad samaaegselt juurde samale meetodile klassis StringBuilder. Klass StringBuilder sisaldab selliseid meetodeid nagu append(), insert(), reverse(), asenda().
Milline on Java stringi, StringBufferi ja StringBuilderi sarnasus?
Kõike saab kasutada stringide loomiseks
Mis vahe on Java StringBufferil ja StringBuilderil?
String vs StringBuffer vs StringBuilder |
|
String | String on Java klass, mida kasutatakse String tüüpi objekti loomiseks, mis on tähemärkide jada. |
StringBuffer | StringBuffer on Java klass, mida kasutatakse stringobjektide loomiseks, mida saab lõime turvalisusega muuta. |
StringBuilder | StringBuilder on klass, mida kasutatakse stringiobjektide loomiseks, mida saab muuta ilma lõime turvalisuseta. |
Mutability | |
String | String on muutumatu klass. |
StringBuffer | StringBuffer on muutuv klass. |
StringBuilder | StringBuilder on muutuv klass. |
Keerme ohutus | |
String | Stringi meetodid on lõimekindlad. |
StringBuffer | StringBufferi meetodid on lõimekindlad ja sünkroonitud. |
StringBuilder | StringBuilderi meetodid ei ole turvaliselt keermestatud ega sünkroonimata. |
Esitus | |
String | String on kiire. |
StringBuffer | StringBuffer on aeglane. |
StringBuilder | StringBuilder on kiire. |
Kokkuvõte – String vs StringBuffer vs StringBuilder Javas
String, StringBuffer ja StringBuilder näivad olevat samad, kuid neil on erinev tähendus. Kõik need on Java klassid. Stringi, StringBufferi ja StringBuilderi erinevus Javas seisneb selles, et String on klass String-tüüpi objekti loomiseks, mis on tähemärkide kogum, StringBuffer on klass, mida kasutatakse stringide muutmiseks ja lõime turvalisuse tagamiseks, samas kui StringBuilder on klass, mida kasutatakse stringide muutmiseks, mis ei taga lõime turvalisust.
Laadige Javas alla PDF String vs StringBuffer vs StringBuilder
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit. Erinevused stringi StringBufferi ja StringBuilderi vahel Javas