2011-11-07 6 views
5

मैं जब शून्य वस्तुओं एक उदाहरण के साथ जोड़े जाते StringBuilder के निम्न व्यवहार को समझने में सक्षम नहीं हूँ:StringBuffer व्यवहार वस्तुओं

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

} 

पिछले प्रिंट बयान प्रिंट नहीं करता 0. किसी को भी कृपया मदद कर सकते हैं मुझे समझने व्यवहार?

उत्तर

9

StringBuffer एपीआई से -

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html#append(java.lang.String)

स्ट्रिंग तर्क के पात्रों जोड़ दिए जाते हैं, क्रम में, तर्क की लंबाई से इस क्रम की लंबाई बढ़ रही है। यदि str शून्य है, तो चार वर्ण "शून्य" जोड़ दिए गए हैं।

यह लंबाई की व्याख्या के रूप में 4.

+0

डी *** शॉउड ने संलग्न करने के लिए प्रलेखन (स्ट्रिंग) पढ़ा है। धन्यवाद !! –

1

नहीं, आप 0 करने के लिए लंबाई निर्धारित करना चाहिए; "शून्य निर्दिष्ट करने से पहले" प्रिंट 0

फिर आप null जोड़ते हैं, जो बफर में स्ट्रिंग "null" के रूप में दिखाई देगा, जिसमें लंबाई चार है।

2

स्ट्रिंगबिल्डर "शून्य" जोड़ता है जब आप इसे एक शून्य संदर्भ देते हैं। यह डिबगिंग को आसान बनाता है। यदि आप "शून्य" के बजाय खाली स्ट्रिंग चाहते हैं, तो बस संलग्न करने से पहले संदर्भ का परीक्षण करें:

if (obj != null) { 
    builder.append(obj); 
} 
संबंधित मुद्दे