StringBuffer vs StringBuilder
Java és un llenguatge orientat a objectes molt popular. A Java, la classe String es proporciona per contenir una seqüència de caràcters que no es poden modificar (un cop inicialitzada). Alternativament, el llenguatge de programació Java proporciona dos tipus de seqüències de caràcters mutables. És a dir, quan els programadors necessiten modificar una determinada cadena (després de la inicialització), han d'utilitzar la classe StringBuffer o la classe StringBuilder, en comptes de la classe String. StringBuffer es va introduir a JDK 1.0 i la classe StringBuilder es va introduir a JDK 1.5, en realitat com a reemplaçament de la classe StringBuffer (per a entorns d'un sol fil).
Què és StringBuffer?
La classe StringBuffer es va introduir a JDK 1.0. La classe StringBuffer pertany al paquet java.lang i s'hereta del genèric java.lang.object. Els programadors no poden ampliar-ho més ja que és una classe final. La classe StringBuffer implementa interfícies Serializable, Appendable i CharSequience. Un objecte de la classe StringBuffer pot contenir una seqüència de caràcters que és mutable i segura per a fils. Això vol dir que és molt semblant a un objecte String, però la seqüència de caràcters (longitud i contingut) es pot canviar en qualsevol moment després d'inicialitzar l'objecte StringBuffer. Tanmateix, això s'ha de fer utilitzant els mètodes específics proporcionats per la classe StringBuffer. Hi ha dues operacions principals a la classe StringBuffer. Els proporcionen els mètodes append() i insert(). Aquests mètodes estan sobrecarregats, de manera que poden acceptar dades de qualsevol tipus, com ara enters i llargs. Tots dos mètodes primer transformen qualsevol entrada en una cadena i després afegeixen (afegeix o insereix) els caràcters de la cadena corresponent a l'objecte Stribbuff existent. El mètode append() afegeix la cadena convertida al final de l'objecte StringBuffer existent, mentre que el mètode insert() afegirà els caràcters d'entrada al punt d'inserció especificat.
Què és StringBuilder?
La classe StringBuilder es va introduir a JDK 1.5. L'API StringBuilder és molt semblant a l'API StringBuffer. De fet, la classe StringBuilder es va introduir com a reemplaçament de la classe StringBuffer (per a aplicacions d'un sol fil). La classe StringBuilder pertany al paquet java.lang i s'hereta del genèric java.lang.object. És una classe final i, per tant, els programadors no poden ampliar-la. La classe StringBuilder implementa interfícies Serializable, Appendable i CharSequience. Un objecte de la classe StringBuilder pot contenir una seqüència de caràcters que és mutable però no segura per a fils. Això vol dir que és molt semblant a un objecte String, però la cadena es pot canviar en qualsevol moment. Però la classe StringBuilder no proporciona sincronització i, per tant, es diu que és més ràpida que utilitzar la classe StringBuffer. La classe StringBuilder proporciona mètodes append() i insert() amb una funcionalitat exactament similar a la de la classe StringBuffer.
Quina diferència hi ha entre StringBuffer i StringBuilder?
Tot i que les classes StringBuilder i StringBuffer es poden utilitzar per a seqüències de caràcters mutables a Java, tenen una diferència clau. A diferència de la classe StringBuffer, la classe StringBuilder no és segura per a fils i no proporciona sincronització. Per tant, es recomana que la classe StringBuilder s'utilitzi en lloc de la classe StringBuffer en aplicacions d'un sol fil, perquè s'afirma que la classe StringBuilder serà molt més ràpida que la classe StringBuffer (en circumstàncies normals).