Parte N°6 Java SE - La clase StringBuffer y uso de memoria.

La clase StringBuffer

Las variables u objetos de la clase String hasta ahora vistos, solamente se han podido crear y leer, pero no se pueden modificar.


La siguiente función/método, a la cual se le pasa como parámetro u argumento, un *array (arreglo, vector) de cadenas de caracteres (String).


*Los array (arreglo, vector) se estudiarán en las siguientes publicaciones.


public class stringBuffer1 {
   
    public static void main(String [] argv){
        String[]arreglo_palabras ={"hola","java","chao"};
         stringBuffer1 strf=new stringBuffer1();
         System.out.println(strf.getMensaje(arreglo_palabras));
    }
    public String getMensaje(String[] recibe_arreglo_palabras){
            String mensaje="";
            for(int i=0; i<recibe_arreglo_palabras.length; i++){
                  mensaje+=" "+recibe_arreglo_palabras[i];
            }
            return mensaje;
        }  
}

En el código se ha utilizado la creación de un objeto de clase:
stringBuffer1 strf=new stringBuffer1();, y una función/método llamada length, esta permite determinar el largo (tipo de dao entero) de un arreglo, variable u objeto, además de la creación de un método getMensaje.


Cuando agregamos una nueva palabra, se reserva una nueva porción de memoria y se elimina la porción anterior de memoria, que es más pequeña (una palabra menos), esta eliminación de memoria, es realizada por el recolector de basura (Garbage Collector). Si el bucle (ciclo de repetición:for) se realiza 300 veces, habrá 300 porciones de memoria que el recolector de basura tiene que identificar y liberar (eliminar su uso).


Para optmizar el uso de los recursos disponibles y evitar un trabajo extra al recolector de basura, podemos utilizar el objeto la clase StringBuffer que nos permite crear objetos dinámicos, que pueden modificarse.




Codigo de ejemplo:

public class stringBuffer2 {
    StringBuffer mensaje;
   
    public static void main(String [] argv){
     
        String[]arreglo_palabras ={"hola","java","chao"};
         stringBuffer2 strf=new stringBuffer2();
         System.out.println(strf.getMensaje2(arreglo_palabras));
    }
   
      public String getMensaje2(String[] palabras2){
            mensaje=new StringBuffer();
            for(int i=0; i<palabras2.length; i++){  
                  mensaje.append("  ");
                  mensaje.append(palabras2[i]);
            }
            return mensaje.toString();
      }    
}

La función append tiene la tarea de incrementar la memoria reservada para el objeto u variable mensaje con una palabra más sin crear  una nueva porción de memoria, cada vez que se ejecuta el bucle de repetición, en este caso FOR. La función/método toString(), que veremos más adelante, convierte un objeto en una cadena de caracteres.

Código que incluye los dos ejemplo de códigos anteriores, en una clase:

public class stringBuffer1 {
    StringBuffer mensaje;
    
    public static void main(String [] argv){
      
        String[]arreglo_palabras ={"hola","java","chao"};
         stringBuffer1 strf=new stringBuffer1();
         System.out.println(strf.getMensaje(arreglo_palabras));
         System.out.println(strf.getMensaje2(arreglo_palabras));
    }
    public String getMensaje(String[] recibe_arreglo_palabras){
String mensaje1="";
for(int i=0; i<recibe_arreglo_palabras.length; i++){
mensaje1+=" "+recibe_arreglo_palabras[i];
}
return mensaje1;
        }
public String getMensaje2(String[] palabras2){
mensaje=new StringBuffer();
for(int i=0; i<palabras2.length; i++){
mensaje.append("  ");
mensaje.append(palabras2[i]);
}
return mensaje.toString();
}
}


Comentarios

Entradas populares de este blog

Clase String en Java SE - Parte n°3. - Metodos, Funciones Comparación.

Clase String en Java SE - Parte n°1.

Clase String en Java SE - Parte n°5. - Conversion de String, Int, Double, Funcion Trim().