यह ऐतिहासिक संदर्भ पर विचार करने में मदद कर सकता है। StringBuilder
जावा 5 के साथ पेश किया गया था, क्योंकि यह पहचाना गया है कि StringBuffer
इसके वास्तविक उपयोग मामलों के लिए उपयुक्त नहीं है।
नए पेश किए गए StringBuilder
को पूरी तरह से स्थानीय संदर्भ में, निर्माण और उपयोग किए जाने के प्रमुख उपयोग के मामले के लिए डिज़ाइन किया गया है। इसलिए, यह कोई सिंक्रनाइज़ेशन प्रदान नहीं करता है और यह toString()
विधि के दुर्लभ मामले को अनुकूलित करने के लिए परेशान नहीं करता है, जिसमें बदलाव के बीच कई बार कहा जाता है (वास्तविक जीवन में यह कब होता है?), खासकर वास्तव में , थ्रेड सिंक्रनाइज़ेशन के प्रदर्शन लाभ को बलि किए बिना कैशिंग सुविधा प्रदान करना, कहीं "कठिन" "असंभव" के बीच है।
जबकि StringBuilder
सुरक्षित थ्रेड नहीं किया जा प्रलेखित है, तो तुम्हें पता असंगत बातें जब उस पर तरीकों समवर्ती बुला भी हो सकता है, वर्ग String
अचल स्थिति के माध्यम से सुरक्षित धागा होने की गारंटी है, इसलिए, यह अनुमति नहीं दी जानी चाहिए कि StringBuilder
' सिंक्रनाइज़ेशन की अनुपस्थिति पहले से निर्मित स्ट्रिंग्स में असंगतता का कारण बन सकती है और String
और StringBuilder
के बीच सरणी साझा नहीं कर सकती है, यह सबसे सुरक्षित समाधान है।
तो यह अनुकूलन क्यों है, अगर वास्तविक जीवन में इसका कभी भी लाभ नहीं होता है? खैर, क्योंकि यह बहुत लंबे समय से है, जावा 1.0 के बाद भी सबसे अधिक संभावना है और कक्षा StringBuffer
में कुछ भी बदलने के लायक नहीं है। अपनी उपस्थिति किसी भी वास्तविक लाभ नहीं हो सकता है, लेकिन न तो इसे हटाने है, जो नए परीक्षण और इतने पर की आवश्यकता होगी और बाहर बारी कुछ आवेदन के लिए space bar overheating feature होने के लिए कर सकता है ...
आपको लगता है कि वापस तो देख सकते हैं, जावा 1 में .x, बहुत से डिजाइन निर्णय किए गए थे जो आज अजीब लग सकते हैं।मौलिक कक्षाओं में synchronized
का उपयोग करना उनमें से एक है, यह शायद ही कभी किसी अन्य को अनुकूलन में मदद करता है। उस समय, अपरिवर्तनीयता के प्रभाव भी अच्छी तरह से समझ में नहीं आये थे, यही कारण है कि हमारे पास String.valueOf(char[])
और String.copyValueOf(char[])
, new String(char[])
का उपयोग करने का अवसर है ...
आपका पहला अनुमान सही है। – Flown
@Flown क्या यह इसके लायक है? क्या कोई प्रदर्शन बढ़ावा होगा? अधिक कोड का मतलब है और अधिक कीड़े। – ntysdd
यदि आप कई बार 'स्ट्रिंगबफर :: टूस्ट्रिंग' कहते हैं, तो एक लाभ होगा। – Flown