2011-11-07 7 views
5

io non sono in grado di capire il seguente comportamento di StringBuilder quando gli oggetti NULL vengono aggiunte a un'istanza:comportamento StringBuffer per NULL oggetti

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. ??? 
    } 

} 

L'ultima istruzione di stampa non stampa 0. Qualcuno può aiutarmi a capire il comportamento?

risposta

1

No, è possibile impostare la lunghezza a 0; le stampe "Prima di assegnare null" 0.

Quindi si aggiunge null, che verrà visualizzato nel buffer come stringa "null", che ha lunghezza quattro.

2

StringBuilder aggiunge "null" quando si assegna un riferimento null. Facilita il debug. Se si desidera una stringa vuota anziché "null", basta testare il riferimento prima di aggiungere:

Problemi correlati