"नमस्कार, अमीगो!"
"नमस्कार, ऋषि!"
"अब आप कुछ दिलचस्प सीखने के लिए स्ट्रिंग्स के बारे में पर्याप्त जानते हैं। अधिक विशेष रूप से, एक नया वर्ग जो समान है, लेकिन स्ट्रिंग वर्ग के समान नहीं है।"
"पेचीदा लगता है, हालांकि यह मेरे लिए पूरी तरह से स्पष्ट नहीं है कि सामान्य तार कैसे कम हो जाते हैं और अन्य स्ट्रिंग-जैसी कक्षाओं की आवश्यकता क्यों होती है।"
"आइए इस तथ्य से शुरू करें कि तार जावा में अपरिवर्तनीय वस्तुएं हैं।"
"वह कैसे है? मैं भूल गया...या मुझे कभी पता ही नहीं चला कि शुरू करना है..."
"मैं आपको याद दिला दूं कि अपरिवर्तनीय वस्तुएं वे हैं जिनकी स्थिति बनने के बाद उन्हें बदला नहीं जा सकता है।"
"आह... जावा में तार अपरिवर्तनीय क्यों हैं?"
"यह स्ट्रिंग क्लास को अत्यधिक अनुकूलित करने और इसे हर जगह उपयोग करने की अनुमति देने के लिए किया गया था। उदाहरण के लिए, हैश मैप संग्रह में कुंजी के रूप में उपयोग के लिए केवल अपरिवर्तनीय प्रकारों की सिफारिश की जाती है ।
"हालांकि, अक्सर ऐसी परिस्थितियां उत्पन्न होती हैं जब प्रोग्रामर को स्ट्रिंग क्लास के लिए म्यूटेबल होने के लिए यह अधिक सुविधाजनक लगता है। वे एक ऐसा वर्ग चाहते हैं जो हर बार एक नया सबस्ट्रिंग नहीं बनाता है, जिसे इसके तरीकों में से एक कहा जाता है।"
"लेकिन यह किस लिए अच्छा है?"
"ठीक है, मान लीजिए कि हमारे पास एक बहुत बड़ी स्ट्रिंग है और हमें इसके अंत में बार-बार कुछ जोड़ने की आवश्यकता है। इस मामले में, वर्णों का एक संग्रह भी ( ) ArrayList<Character>
लगातार स्ट्रिंग ऑब्जेक्ट्स को फिर से बनाने और जोड़ने से अधिक कुशल हो सकता है।"
"और इसीलिए हमें ऐसे स्ट्रिंग्स की आवश्यकता है जो बिल्कुल स्ट्रिंग क्लास नहीं हैं?"
"बिल्कुल सही। जावा भाषा में एक स्ट्रिंग-जैसा प्रकार जोड़ा गया है जिसे बदला जा सकता है। इसे StringBuilder
"कहा जाता है।"
एक वस्तु बनाना
StringBuilder
" मौजूदा स्ट्रिंग के आधार पर ऑब्जेक्ट बनाने के लिए , आपको एक कथन निष्पादित करने की आवश्यकता है:
StringBuilder name = new StringBuilder(string);
"एक खाली म्यूटेबल स्ट्रिंग बनाने के लिए, आपको इस तरह के एक बयान का उपयोग करने की आवश्यकता है:
StringBuilder name = new StringBuilder();
विधियों की सूची
" StringBuilder
कक्षा में दो दर्जन सहायक विधियाँ हैं। यहाँ सबसे महत्वपूर्ण हैं:
तरीका | विवरण |
---|---|
|
पारित वस्तु को एक स्ट्रिंग में परिवर्तित करता है और इसे वर्तमान स्ट्रिंग में जोड़ता है |
|
पारित वस्तु को एक स्ट्रिंग में परिवर्तित करता है और वर्तमान स्ट्रिंग के मध्य में सम्मिलित करता है |
|
प्रारंभ..अंत अंतराल द्वारा निर्दिष्ट स्ट्रिंग के भाग को पारित स्ट्रिंग के साथ बदलता है |
|
स्ट्रिंग से निर्दिष्ट इंडेक्स वाले वर्ण को हटाता है |
|
स्ट्रिंग से निर्दिष्ट अंतराल के भीतर वर्णों को हटाता है |
|
वर्तमान स्ट्रिंग में एक सबस्ट्रिंग की खोज करता है |
|
अंत से शुरू करते हुए, वर्तमान स्ट्रिंग में एक सबस्ट्रिंग की खोज करता है |
|
पास किए गए इंडेक्स पर स्ट्रिंग में वर्ण लौटाता है |
|
निर्दिष्ट अंतराल द्वारा परिभाषित सबस्ट्रिंग देता है |
|
वर्तमान स्ट्रिंग को उलट देता है। |
|
निर्दिष्ट इंडेक्स पर वर्ण को पास किए गए वर्ण में बदल देता है |
|
वर्णों में स्ट्रिंग की लंबाई लौटाता है |
"और अब मैं आपको इनमें से प्रत्येक विधि का संक्षिप्त वर्णन करूँगा।
एक स्ट्रिंग से जुड़ रहा है
"एक परिवर्तनशील स्ट्रिंग ( ) में कुछ जोड़ने के लिए StringBuilder
, append()
विधि का उपयोग करें। उदाहरण:
कोड | विवरण |
---|---|
|
Hi |
एक मानक स्ट्रिंग में कनवर्ट करना
StringBuilder
" ऑब्जेक्ट को स्ट्रिंग ऑब्जेक्ट में बदलने के लिए , आपको बस इसकी toString()
विधि को कॉल करने की आवश्यकता है। उदाहरण
कोड | उत्पादन |
---|---|
|
Hi123 |
मैं एक चरित्र को कैसे हटाऊं?
"एक परिवर्तनीय स्ट्रिंग में एक वर्ण को हटाने के लिए, आपको deleteCharAt()
विधि का उपयोग करने की आवश्यकता है। उदाहरण:
कोड | उत्पादन |
---|---|
|
Helo |
मैं एक स्ट्रिंग के हिस्से को दूसरी स्ट्रिंग से कैसे बदलूं?
"इसके लिए विधि है replace(int begin, int end, String str)
। उदाहरण:
कोड | उत्पादन |
---|---|
|
MeHello!w |
"सुविधाजनक लगता है। धन्यवाद, ऋषि।"
"इसका जिक्र मत करो। इसके बारे में क्या ख्याल है, क्या आप एक स्ट्रिंग को पीछे की ओर फ्लिप कर सकते हैं? आप इसे कैसे करेंगे?"
"खैर... मैं एक बनाऊंगा StringBuilder
, उसमें एक स्ट्रिंग डालूंगा... फिर एक नया स्ट्रिंग बनाऊंगा, और एक लूप में अंतिम वर्ण से पहले वर्ण तक... या शायद थोड़ा सा बदलाव...
"बुरा नहीं है। लेकिन यह तेज़ हो सकता है। ऐसा करने के लिए एक विशेष तरीका है - reverse();
उदाहरण:
कोड | उत्पादन |
---|---|
|
olleH |
" StringBuilder
कक्षा के अलावा, जावा में एक और स्ट्रिंग-जैसी कक्षा है जिसे कहा जाता है StringBuffer
। यह वर्ग का एक एनालॉग है StringBuilder
, लेकिन इसकी विधियों को synchronized
संशोधक के साथ चिह्नित किया गया है।"
"इसका क्या मतलब है?"
"इसका मतलब है कि StringBuffer
ऑब्जेक्ट को एक साथ कई थ्रेड्स से एक्सेस किया जा सकता है।"
"मैं अभी तक धागे से बहुत परिचित नहीं हूं। लेकिन 'एकाधिक धागे से पहुंचा जा सकता है' 'एकाधिक धागे से पहुंचा नहीं जा सकता' से स्पष्ट रूप से बेहतर है ... हमेशा इसका उपयोग क्यों न करें? StringBuffer
"
"क्योंकि यह की तुलना में बहुत धीमा है । जब आप जावा मल्टीथ्रेडिंग खोज StringBuilder
में सक्रिय रूप से मल्टीथ्रेडिंग का पता लगाना शुरू करते हैं तो आपको ऐसी कक्षा की आवश्यकता हो सकती है।
"मैं इसे अपनी स्मृति में लिखूंगा ताकि भूल न जाऊं। 'भविष्य के लिए' चिह्नित।
GO TO FULL VERSION