Clase StringBuffer

En la sección dedicada a los operadores hemos visto que es posible concatenar cadenas de caracteres, es, decir, objetos de la clase String. Ahora bien, los objetos de la clase String son constantes lo cual significa que por defecto, solamente se pueden crear y leer pero no se pueden modificar. Imaginemos una función miembro a la cual se le pasa un array de cadenas de caracteres. Los arrays se estudiarán en la siguiente página.

public class CrearMensaje{
	public String getMensaje(String[] palabras){
		String mensaje="";
		for(int i=0; i

Cada vez que se añade una nueva palabra, se reserva una nueva porción de memoria y se desecha la vieja porción de memoria que es más pequeña (una palabra menos) para que sea liberada por el recolector de basura (grabage collector). Si el bucle se realiza 1000 veces, habrá 1000 porciones de memoria que el recolector de basura ha de identificar y liberar.

Para evitar este trabajo extra al recolector de basura, se puede emplear la clase StringBuffer que nos permite crear objetos dinámicos, que pueden modificarse.

public class CrearMensaje{
	public String getMensaje(String[] palabras){
		StringBuffer mensaje=new StringBuffer();
		for(int i=0; i

La función append incrementa la memoria reservada para el objeto mensaje con una palabra más sin crear nueva memoria, cada vez que se ejecuta el bucle. La función toString, que veremos más adelante, convierte un objeto en una cadena de caracteres.