Raktų skirtumas – String vs StringBuffer vs StringBuilder programoje Java
String, StringBuffer ir String Builder yra Java klasės. Styga yra plačiai naudojama Java programavimui. Sukūrus eilutės objektą, jų pakeisti nebeįmanoma. Kiekvieną kartą, kai įvyksta eilutės pakeitimas, ji sukuria naują eilutę. Net jei tai yra esamos eilutės sujungimas, sukuriama nauja eilutė. Tai sukelia atminties eikvojimą. StringBuffer ir StringBuilder klasės Java yra naudojamos modifikuoti String. Pagrindinis skirtumas tarp „String“, „StringBuffer“ir „StringBuilder“programoje „Java“yra tas, kad „String“yra klasė, skirta sukurti „String“tipo objektą, kuris yra simbolių seka, „StringBuffer“yra klasė, naudojama modifikuoti eilutes, užtikrinančias gijų saugumą, o „StringBuilder“yra klasė, kuri naudojama modifikuoti stygas, kurios neužtikrina gijų saugumo.
Kas yra eilutė Java?
Styginių klasė yra java.lang pakete. Kiekvieną kartą, kai programuotojas sukuria eilutę, tai yra String tipo objektas. Stygos yra nekintamos reikšmės, kai objektas yra sukurtas, jo negalima pakeisti. Objektai, sukurti naudojant įvyniojimo klases, pvz., Integer, Byte, Float, Double, taip pat yra nekintantys. Eilutės literalas yra įterptas į dvigubas kabutes. pvz. "Labas pasauli". Kiekvieną kartą, kai sukuriamas eilutės literalas, „Java“virtualioji mašina (JVM) patikrina eilutės konstantos telkinį. Jei eilutė egzistuoja, grąžinama nuoroda į eilutės konstantos telkinį. Jei tai nauja eilutė, tas objektas sukuriamas eilutės konstantų telkinyje.
01 pav.: Java programa naudojant String, StringBuffer ir StringBuilder
Žiūrėkite toliau pateiktą kodo dalį.
String s1="Sveiki";
s1=s1 + „Pasaulis“;
System.out.println(s1);
Pirmajame teiginyje s1 reiškia „Labas“eilutės konstantų telkinyje. Antrame teiginyje JVM nekeičia esamos eilutės. Vietoj to, ji sukuria naują eilutę kaip „Hello World“, o s1 dabar nurodo tą naują eilutę. Išeinantis „Hello“objektas vis dar egzistuoja eilutės konstantų telkinyje.
Jei yra kodas, kuris yra
String s1="Sveiki";
Eilutė s2=s1;
s1, s2 abu bus susiję su eilutės objektu „Labas“.
Kas yra StringBuffer Java?
StringBuffer klasė naudojama siekiant pakeisti String objektus. Todėl tuos objektus galima modifikuoti. StringBuffer apibrėžia keturis konstruktorius. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Žiūrėkite toliau pateiktą kodą, StringBuffer s1=new StringBuffer(“Labas“);
s1.append("Pasaulis");
System.out.println(s1);
1 sakinyje s1 nurodo objektą „Labas“krūvoje. Objektas yra keičiamas, nes jis sukurtas naudojant StringBuffer. 2 sakinyje „Pasaulis“pridedamas prie to paties „Hello“eilutės objekto.
Eilutės objektai, sukurti naudojant StringBuffer klasę, gali sutaupyti atminties. StringBuffer užtikrina gijų saugumą, nes dvi gijos negali pasiekti to paties metodo StringBuffer klasėje vienu metu. Siūlų sauga sumažina StringBuffer našumą. StringBuffer klasėje yra tokie metodai kaip append(), insert(), reverse(), pakeisti().
Kas yra StringBuilder programoje Java?
„StringBuilder“klasė naudojama norint pakeisti „String“objektus. Todėl tuos objektus galima modifikuoti. Funkcija panaši į StringBuffer, tačiau tai neužtikrina gijų saugumo. StringBuilder turi tokius konstruktorius kaip StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Žiūrėkite toliau pateiktą kodą.
StringBuilder s1=naujas StringBuilder("Labas");
s1.append("Pasaulis");
System.out.println(s1);
1 sakinyje s1 nurodo objektą „Labas“krūvoje. Objektas yra keičiamas, nes jis sukurtas naudojant StringBuilder. 2 sakinyje „Pasaulis“pridedamas prie to paties „Labas“eilutės objekto. Visiškai naujas String objektas nesukuriamas.
Eilutės objektai, sukurti naudojant StringBuilder klasę, gali sutaupyti atminties. Skirtingai nei StringBuffer, StringBuilder neužtikrina gijų saugos, nes dvi gijos gali pasiekti tą patį metodą StringBuilder klasėje vienu metu. „StringBuilder“klasėje yra tokie metodai kaip append(), insert(), reverse(), pakeisti().
Koks yra String, StringBuffer ir StringBuilder panašumas Java?
Viską galima naudoti kuriant eilutes
Kuo skiriasi String StringBuffer ir StringBuilder programoje Java?
String vs StringBuffer vs StringBuilder |
|
Eilutė | Eilutė yra „Java“klasė, naudojama sukurti String tipo objektą, kuris yra simbolių seka. |
StringBuffer | StringBuffer yra „Java“klasė, kuri naudojama eilutės objektams kurti, kuriuos galima modifikuoti naudojant gijų saugumą. |
StringBuilder | StringBuilder yra klasė, naudojama kurti eilučių objektus, kuriuos galima modifikuoti be gijos saugos. |
Kintamumas | |
Eilutė | Eilutė yra nekintanti klasė. |
StringBuffer | StringBuffer yra kintama klasė. |
StringBuilder | StringBuilder yra kintama klasė. |
Siūlų sauga | |
Eilutė | Stygos metodai yra saugūs. |
StringBuffer | StringBuffer metodai yra saugūs gijų ir sinchronizuojami. |
StringBuilder | StringBuilder metodai nėra saugūs ir nesinchronizuoti. |
Performansas | |
Eilutė | Eilutė greita. |
StringBuffer | StringBuffer yra lėtas. |
StringBuilder | StringBuilder yra greita. |
Santrauka – String vs StringBuffer vs StringBuilder Java
String, StringBuffer ir StringBuilder atrodo tas pats, tačiau jų reikšmės skiriasi. Visa tai yra „Java“klasės. Skirtumas tarp „String“, „StringBuffer“ir „StringBuilder“programoje „Java“yra tas, kad „String“yra klasė, skirta sukurti „String“tipo objektą, kuris yra simbolių rinkinys, „StringBuffer“yra klasė, naudojama modifikuoti eilutes ir užtikrinti gijų saugumą, o „StringBuilder“yra klasė, kuri naudojama modifikuoti stygas, kurios neužtikrina gijų saugumo.
Atsisiųskite PDF String vs StringBuffer vs StringBuilder Java
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia. Skirtumas tarp StringBuffer ir StringBuilder Java