मैं उत्सुक था कि वास्तव में क्या डीपटॉस्ट्रिंग कर रहा था इसलिए मैं विधि को देखने गया। मेरा विशिष्ट प्रश्न यह है कि सरणी वस्तु की लंबाई से 20 को गुणा करने से वास्तव में क्या होता है?

 public static String deepToString(Object[] a) {
    if (a == null)
        return "null";

    int bufLen = 20 * a.length;
    if (a.length != 0 && bufLen <= 0)
        bufLen = Integer.MAX_VALUE;
    StringBuilder buf = new StringBuilder(bufLen);
    deepToString(a, buf, new HashSet<Object[]>());
    return buf.toString();
}
-1
user2023608 27 सितंबर 2017, 18:40

1 उत्तर

सबसे बढ़िया उत्तर

यह एक प्रदर्शन शर्त है। यह स्ट्रिंगबिल्डर को ऐसे आकार के साथ प्रारंभ करता है जिसमें बफर को कई बार (या बिल्कुल) का आकार बदलने के बिना सबकुछ जोड़ने के लिए पर्याप्त संभावनाएं होती हैं, और बहुत अधिक स्मृति बर्बाद करने से बचने के लिए बहुत बड़ी नहीं होती है।

2
JB Nizet 27 सितंबर 2017, 18:45
स्पष्टीकरण के लिए धन्यवाद, समझ में आता है।
 – 
user2023608
27 सितंबर 2017, 18:53