Kľúčový rozdiel - String vs StringBuffer vs StringBuilder v Jave
String, StringBuffer a String Builder sú triedy v Jave. String je široko používaný v programovaní Java. Po vytvorení objektu String nie je možné ich zmeniť. Zakaždým, keď dôjde k zmene reťazca, vytvorí sa nový reťazec. Aj keď ide o zreťazenie s existujúcim reťazcom, vytvorí nový reťazec. To spôsobí stratu pamäte. Na úpravu String sa používajú triedy StringBuffer a StringBuilder v Jave. Kľúčový rozdiel medzi String, StringBuffer a StringBuilder v Jave je ten, že String je trieda na vytvorenie objektu typu String, ktorý je postupnosťou znakov, StringBuffer je trieda, ktorá sa používa na úpravu reťazcov, ktoré poskytujú bezpečnosť vlákien, a StringBuilder je triedy, ktorá sa používa na úpravu reťazcov, ktoré neposkytujú bezpečnosť vlákien.
OBSAH
1. Prehľad a kľúčový rozdiel
2. Čo je to String v Jave
3. Čo je StringBuffer v Jave
4. Čo je StringBuilder v Jave
5. Podobnosti medzi String StringBuffer a StringBuilder v Jave
6. Porovnanie vedľa seba - String vs StringBuffer vs StringBuilder v Java v tabuľkovej podobe
7. Zhrnutie
Čo je to reťazec v Jave?
Trieda reťazcov je v balíku java.lang. Zakaždým, keď programátor vytvorí reťazec, je to objekt typu reťazec. Reťazce sú nemenným významom, ktorý po vytvorení objektu nie je možné zmeniť. Objekty vytvorené pomocou tried obálky ako Integer, Byte, Float, Double sú tiež nemenné. Reťazcový literál je uzavretý v úvodzovkách. napr. „Hello World“. Zakaždým, keď sa vytvorí reťazcový literál, Java Virtual Machine (JVM) skontroluje fond konštantných reťazcov. Ak reťazec existuje, vráti sa odkaz na fond konštantných reťazcov. Ak ide o nový reťazec, tento objekt sa vytvorí v skupine konštantných reťazcov.
Obrázok 01: Program Java používajúci String, StringBuffer a StringBuilder
Prečítajte si nižšie uvedený kód.
Reťazec s1 = „Dobrý deň“;
s1 = s1 + „svet“;
System.out.println (s1);
V prvom príkaze s1 odkazuje na „Hello“v skupine konštantných reťazcov. V druhom vyhlásení JVM nezmení existujúci reťazec. Namiesto toho vytvorí nový reťazec ako „Hello World“a s1 teraz odkazuje na tento nový reťazec. Ukončujúci objekt „Hello“stále existuje v skupine konštantných reťazcov.
Ak existuje kód, ktorý je, Reťazec s1 = „Dobrý deň“;
Reťazec s2 = s1;
s1, s2 obidva budú odkazovať na objekt String „Hello“.
Čo je to StringBuffer v Jave?
Trieda StringBuffer sa používa na to, aby boli objekty String premenlivé. Preto je možné tieto objekty upravovať. StringBuffer definuje štyri konštruktory. StringBuffer (), StringBuffer (veľkosť int), StringBuffer (reťazec str), StringBuffer (charSequence ch)
Prečítajte si kód uvedený nižšie, StringBuffer s1 = nový StringBuffer („Ahoj“);
s1.append („Svet“);
System.out.println (s1);
Vo vyhlásení 1 s1 odkazuje na objekt „Hello“v halde. Objekt je premenlivý, pretože je vytvorený pomocou nástroja StringBuffer. Vo vyhlásení 2 sa výraz „svet“pripojí k rovnakému objektu reťazca „Hello“.
Reťazcové objekty vytvorené pomocou triedy StringBuffer môžu ušetriť pamäť. StringBuffer poskytuje bezpečnosť vlákien, pretože dve vlákna nemôžu súčasne pristupovať k rovnakej metóde v triede StringBuffer. Bezpečnosť vlákna znižuje výkon StringBuffer. Trieda StringBuffer obsahuje metódy ako append (), insert (), reverse (), replace ().
Čo je to StringBuilder v Jave?
Trieda StringBuilder sa používa na zabezpečenie premenlivosti objektov String. Preto je možné tieto objekty upravovať. Funkčnosť je podobná ako v StringBuffer, ale to nezabezpečuje bezpečnosť vlákien. StringBuilder má konštruktory ako StringBuilder (), StringBuilder (veľkosť int), StringBuilder (String str).
Pozrite si nižšie uvedený kód.
StringBuilder s1 = nový StringBuilder („Ahoj“);
s1.append („Svet“);
System.out.println (s1);
Vo vyhlásení 1 s1 odkazuje na objekt „Hello“v halde. Objekt je premenlivý, pretože je vytvorený pomocou nástroja StringBuilder. Vo vyhlásení 2 sa výraz „svet“pripojí k rovnakému objektu reťazca „Hello“. Neexistuje vytvorenie úplne nového objektu String.
Reťazcové objekty vytvorené pomocou triedy StringBuilder môžu ušetriť pamäť. Na rozdiel od StringBuffer, StringBuilder neposkytuje bezpečnosť vlákien, pretože dve vlákna môžu mať prístup k rovnakej metóde v triede StringBuilder súčasne. Trieda StringBuilder obsahuje metódy ako append (), insert (), reverse (), replace ().
Aká je podobnosť medzi String, StringBuffer a StringBuilder v Jave?
Všetko je možné použiť na vytvorenie reťazcov
Aký je rozdiel medzi String StringBuffer a StringBuilder v Jave?
Rozdielny článok v strede pred tabuľkou
String vs StringBuffer vs StringBuilder |
|
String | Reťazec je trieda Java, ktorá sa používa na vytvorenie objektu typu String, čo je postupnosť znakov. |
StringBuffer | StringBuffer je trieda Java, ktorá sa používa na vytváranie objektov String, ktoré je možné upravovať pomocou bezpečnosti vlákien. |
StringBuilder | StringBuilder je trieda, ktorá sa používa na vytváranie reťazcových objektov, ktoré je možné upravovať bez bezpečnosti vlákien. |
Premenlivosť | |
String | Reťazec je nemenná trieda. |
StringBuffer | StringBuffer je premenlivá trieda. |
StringBuilder | StringBuilder je premenlivá trieda. |
Bezpečnosť závitu | |
String | Metódy reťazca sú bezpečné pre vlákna. |
StringBuffer | Metódy StringBuffer sú bezpečné pre vlákna a synchronizované. |
StringBuilder | Metódy StringBuilder nie sú bezpečné z hľadiska vlákien a nie sú synchronizované. |
Výkon | |
String | Šnúrka je rýchla. |
StringBuffer | StringBuffer je pomalý. |
StringBuilder | StringBuilder je rýchly. |
Zhrnutie - String vs StringBuffer vs StringBuilder v Jave
String, StringBuffer a StringBuilder sa zdajú byť rovnaké, ale majú rôzne významy. Všetko sú to triedy Java. Rozdiel medzi String, StringBuffer a StringBuilder v Jave je ten, že String je trieda na vytvorenie objektu typu String, čo je sada znakov, StringBuffer je trieda, ktorá sa používa na úpravu reťazcov a zaistenie bezpečnosti vlákien, zatiaľ čo StringBuilder je trieda, ktorá sa používa na úpravu reťazcov, ktorá neposkytuje bezpečnosť vlákien.
Stiahnite si súbor PDF String vs StringBuffer vs StringBuilder v prostredí Java
Môžete si stiahnuť verziu tohto článku vo formáte PDF a použiť ho na offline účely podľa citačnej poznámky. Stiahnite si tu PDF verziu. Rozdiel medzi String StringBuffer a StringBuilder v Jave