2016-06-28 8 views
6

क्या स्ट्रिंगबिल्डर के पास जावा में अधिकतम क्षमता के लिए वर्णों की एक सीमा है।जावा स्ट्रिंगबिल्डर के कितने अक्षर हो सकते हैं?

StringBuilder url=new StringBuilder(); 

stmt = connnection.createStatement(); 
String sql="SOME QUERY"; 
rs = stmt.executeQuery(sql); 
while(rs.next()) 
{ 
    String emailId=rs.getString("USER_EMAIL_ID"); 
    url.append(emailId); 
} 

क्या स्ट्रिंगबिल्डर परिवर्तक 'url' की अधिकतम क्षमता है, या यह सबकुछ पकड़ सकता है?

उत्तर

7

हां, इसमें अधिकतम पूर्णांक की क्षमता में सीमा है जो 2147483647 (तकनीकी रूप से) है।

StringBuilder आंतरिक रूप से char[] ऑब्जेक्ट में chracters रखता है, और सरणी आकार में सीमा है। read more about it on other thread

+2

और यदि यह अधिकतम सीमा से अधिक हो तो क्या होता है? –

0

आप इस लिंक के साथ के माध्यम से जाना यदि यह आप स्पष्ट कर सकते हैं और अधिक Oracle Docs String Builder Buffer Capacity

अब आप किसी भी StringBuilder वर्ग की क्षमता घोषित करने के लिए चाहते हैं, तो एक निर्माता StringBuilder(int initCapacity) इस के लिए परिभाषित किया गया है।

StringBuilder(int initCapacity) :- Creates an empty string builder with the specified initial capacity.

यहाँ पैरामीटर की वजह से int के रूप में अधिकतम क्षमता है कि एक StringBuilder कक्षा तक पहुँचने है सकते हैं 2147483647 हो जाएगा।

StringBuilder कक्षा में क्षमता के इस संदर्भ के संबंध में विभिन्न विधियां हैं, ये विधियां int प्रकार के मानकों पर भी विचार करती हैं।

void setLength(int newLength) :- Sets the length of the character sequence. If newLength is less than length(), the last characters in the character sequence are truncated. If newLength is greater than length(), null characters are added at the end of the character sequence.

void ensureCapacity(int minCapacity) :- Ensures that the capacity is at least equal to the specified minimum.

ये विधियां भी int प्रकार के रूप में तर्क लेती हैं। इसलिए, इन विधियों या संरचनाओं का उपयोग करके आप 2147483647 की अधिकतम क्षमता वाला ऑब्जेक्ट उत्पन्न कर पाएंगे।

+4

आपके द्वारा दिखाए गए तरीके में से कोई भी, अधिकतम * क्षमता करने के लिए कुछ भी नहीं है, जो सवाल है। आपके द्वारा प्रदान किया गया लिंक अधिकतम क्षमता के बारे में कुछ भी नहीं कहता है। आपके अंतिम वाक्य के लिए, सिर्फ इसलिए कि पैरामीटर एक 'int' है, इसका मतलब यह नहीं है कि यदि आप अधिकतम संभव पूर्णांक मान देते हैं, और' नया स्ट्रिंगबिल्डर (Integer.MAX_VALUE) 'प्राप्त होगा, तो आपको कोई त्रुटि नहीं मिलेगी। OutOfMemoryError: अनुरोध किए गए सरणी आकार VM सीमा से अधिक है, भले ही आप वीएम को कितनी मेमोरी असाइन करते हैं। संक्षेप में, इस उत्तर का कोई भी हिस्सा प्रश्न के लिए प्रासंगिक और सटीक नहीं है। – Andreas

+0

@Andreas हाँ आप सही हैं। यदि पर्याप्त मेमोरी उपलब्ध नहीं है तो यह 'आउटऑफ मेमरी' जेवीएम त्रुटि उठाएगी। मैंने त्रुटि का उल्लेख नहीं किया है। धन्यवाद –

+0

भले ही पर्याप्त स्मृति * उपलब्ध है, इसका मतलब यह नहीं है कि 'नया char [Integer.MAX_VALUE]' काम करेगा। किसी सरणी का अधिकतम आकार अन्य बाधाओं से सीमित हो सकता है, जो मंच निर्भर हैं। – Andreas

संबंधित मुद्दे