Diferència clau: String vs StringBuffer vs StringBuilder a Java
String, StringBuffer i String Builder són classes en Java. La cadena s'utilitza àmpliament en la programació Java. Un cop creat un objecte de String, no és possible canviar-lo. Cada vegada que es produeix un canvi a la cadena, es crea una nova cadena. Fins i tot si és una concatenació amb una cadena existent, crea una cadena nova. Això provoca malbaratament de memòria. Les classes StringBuffer i StringBuilder a Java s'utilitzen per modificar String. La diferència clau entre String, StringBuffer i StringBuilder a Java és que String és una classe per crear un objecte del tipus String que és una seqüència de caràcters, StringBuffer és una classe que s'utilitza per modificar Strings que proporciona seguretat de fil i StringBuilder és un classe que s'utilitza per modificar cadenes que no proporcionen seguretat de fil.
Què és String a Java?
La classe String és al paquet java.lang. Cada vegada que el programador crea una cadena, és un objecte de tipus String. Les cadenes són immutables, el que significa que un cop creat l'objecte, no es pot canviar. Els objectes creats amb classes d'embolcall com Integer, Byte, Float, Double també són immutables. Un literal de cadena està inclòs entre cometes dobles. per exemple. "Hola món". Cada vegada que es crea un literal de cadena, la màquina virtual de Java (JVM) comprova l'agrupació de constants String. Si la cadena existeix, es retorna una referència al grup de constants String. Si és una cadena nova, aquest objecte es crea al grup de constants String.
Figura 01: programa Java que utilitza String, StringBuffer i StringBuilder
Consulteu el codi següent.
String s1=“Hola”;
s1=s1 + "Món";
System.out.println(s1);
A la primera declaració, s1 es refereix a l'"Hola" al grup de constants String. A la segona declaració, JVM no canvia la cadena existent. En lloc d'això, crea una cadena nova com a "Hola món" i ara s1 es refereix a aquesta nova cadena. L'objecte "Hello" que surt encara existeix al grup de constants String.
Si hi ha un codi que és, String s1="Hola";
String s2=s1;
s1, s2 tots dos es referiran a l'objecte String "Hola".
Què és StringBuffer a Java?
La classe StringBuffer s'utilitza per fer que els objectes String siguin mutables. Per tant, aquests objectes es poden modificar. StringBuffer defineix quatre constructors. StringBuffer(), StringBuffer (mida int), StringBuffer (String str), StringBuffer (charSequence ch)
Consulteu el codi següent, StringBuffer s1=new StringBuffer(“Hola”);
s1.append(“Món”);
System.out.println(s1);
A la declaració 1, s1 es refereix a l'objecte "Hola" en un munt. L'objecte és mutable perquè es crea amb StringBuffer. A la declaració 2, "Món" s'afegeix al mateix objecte de cadena "Hola".
Els objectes String creats amb la classe StringBuffer poden estalviar memòria. StringBuffer proporciona seguretat de fil perquè dos fils no poden accedir al mateix mètode a la classe StringBuffer simultàniament. La seguretat del fil disminueix el rendiment de StringBuffer. La classe StringBuffer conté mètodes com append(), insert(), reverse(), replace().
Què és StringBuilder a Java?
La classe StringBuilder s'utilitza per fer que els objectes String siguin mutables. Per tant, aquests objectes es poden modificar. La funcionalitat és similar a StringBuffer, però això no proporciona seguretat de fil. StringBuilder té constructors com StringBuilder(), StringBuilder (mida int), StringBuilder (String str).
Consulteu el codi següent.
StringBuilder s1=nou StringBuilder(“Hola”);
s1.append(“Món”);
System.out.println(s1);
A la declaració 1, s1 es refereix a l'objecte "Hola" en un munt. L'objecte és mutable perquè es crea amb StringBuilder. A la declaració 2, "Món" s'afegeix al mateix objecte "Hola" String. No s'ha creat cap objecte String completament nou.
Els objectes String creats amb la classe StringBuilder poden estalviar memòria. A diferència de StringBuffer, StringBuilder no proporciona seguretat de fil perquè dos fils poden accedir al mateix mètode a la classe StringBuilder simultàniament. La classe StringBuilder conté mètodes com append(), insert(), reverse(), replace().
Quina semblança hi ha entre String, StringBuffer i StringBuilder a Java?
Tot es pot utilitzar per crear cadenes
Quina diferència hi ha entre String StringBuffer i StringBuilder a Java?
String vs StringBuffer vs StringBuilder |
|
String | La cadena és una classe Java que s'utilitza per crear un objecte del tipus String, que és una seqüència de caràcters. |
StringBuffer | StringBuffer és una classe Java que s'utilitza per crear objectes String, que es poden modificar amb seguretat de fil. |
StringBuilder | StringBuilder és una classe que s'utilitza per crear objectes de cadena, que es poden modificar sense seguretat de fil. |
Mutabilitat | |
String | La cadena és una classe immutable. |
StringBuffer | StringBuffer és una classe mutable. |
StringBuilder | StringBuilder és una classe mutable. |
Seguretat del fil | |
String | Els mètodes de cadena són segurs per a fils. |
StringBuffer | Els mètodes de StringBuffer són segurs i sincronitzats. |
StringBuilder | Els mètodes de StringBuilder no són segurs i no estan sincronitzats. |
Rendiment | |
String | La cadena és ràpida. |
StringBuffer | StringBuffer és lent. |
StringBuilder | StringBuilder és ràpid. |
Resum: String vs StringBuffer vs StringBuilder a Java
String, StringBuffer i StringBuilder semblen ser els mateixos, però tenen significats diferents. Tot això són classes Java. La diferència entre String, StringBuffer i StringBuilder a Java és que, String és una classe per crear un objecte del tipus String, que és un conjunt de caràcters, StringBuffer és una classe que s'utilitza per modificar Strings i proporcionar seguretat al fil, mentre que StringBuilder és un classe que s'utilitza per modificar cadenes que no ofereixen seguretat de fil.
Descarregueu el PDF String vs StringBuffer vs StringBuilder a Java
Podeu baixar la versió PDF d'aquest article i utilitzar-la per a finalitats fora de línia segons la nota de citació. Si us plau, descarregueu la versió PDF aquí Diferència entre String StringBuffer i StringBuilder a Java