2011-11-07 17 views
5

no soy capaz de entender el siguiente comportamiento de StringBuilder cuando los objetos NULL se anexan a una instancia:comportamiento StringBuffer para NULL objetos

public class StringBufferTest { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String nullOb = null; 
     StringBuilder lsb = new StringBuilder(); 

     lsb.append("Hello World"); 
     System.out.println("Length is: " + lsb.length());// Prints 11. Correct 

     lsb.setLength(0); 
     System.out.println("Before assigning null" + lsb.length());  
     lsb.append(nullOb); 
     System.out.println("Length now is:" + lsb.length()); // Prints 4. ??? 
    } 

} 

La última sentencia de impresión no se imprime 0. Puede alguien por favor me ayude a entender ¿el comportamiento?

Respuesta

1

No, debe ajustar la longitud a 0; el "Antes de asignar nulo" imprime 0.

Luego anexa null, que aparecerá en el búfer como la cadena "null", que tiene la longitud cuatro.

2

StringBuilder agrega "nulo" cuando le da una referencia nula. Facilita la depuración. Si desea una cadena vacía en lugar de "nulo", simplemente pruebe la referencia antes de anexar:

if (obj != null) { 
    builder.append(obj); 
} 
Cuestiones relacionadas