Diferencia entre String y StringBuffer
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.
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.
