Diferencia entre String y StringBuffer

ovniufo
15 de Diciembre del 2005
Que tal, disculpen, alguien puede decirme cual es la diferencia entre String y StringBuffer, porque lo he estado checando y creo que sirven para lo mismo.

Diego
15 de Diciembre del 2005
Un String es inmutable, por lo tanto se puede pasar como parámetro a cualquier método que sabemos que no será modificado, esto es muy útil para la seguridad, pues si se pudiera modificar el nombre de un archivo mientras se chequea si se tienen ciertos permisos sobre el mismo poniendo al principio un archivo sobre el que se puede hacer una operación X y lo cambiamos de modo que apunte a otro en el que no se puede hacer, se podría violar fácilmente la seguridad. Además de esto, no es necesario copiar y copiar Strings cuando los objetos lo compartan, con mantener una referencia al mismo, podemos modificar uno de ellos tranquilamente que los otros objetos no ser verán afectados. Como contrapartida cuando se ha de componer una cadena mediante concatenación se crean muchos objetos inmutables inútiles que ocupan memoria y que puede hacer que sea necesario llamar al recolector de basura. Para evitarlo, se definen las clases StringBuffer y StringBuilder que sirven para generar una cadena mutable, útil, por ejemplo, para sobreescribir el método toString() en estructuras de datos, como arrays, listas o árboles. Si deseas pasar de un tipo a otro sólo has de pasar un objeto de un tipo a un constructor de otro, aunque para pasar a String siempre se puede usar el método toString(). Por cierto, la diferencia entre StringBuffer y StringBuilder es que la primera es segura frente al acceso concurrente y la segunda no, y por ello es algo más rápida.

ovniufo
15 de Diciembre del 2005
Te Agradezco mucho la ayuda Diego, ahora ya tengo mas claro a lo que se refieren estas clases