स्ट्रिंग्स इनर वर्किंग्स, आणि सबस्ट्रिंग पद्धत - 1

"हाय, अमिगो!"

"हाय, एली."

"मी तुम्हाला सबस्ट्रिंगबद्दल सांगणार आहे. सबस्ट्रिंग हा स्ट्रिंगचा एक भाग आहे. आणि स्ट्रिंग्सवर (अनेक स्ट्रिंग एकत्र केल्यावर) सर्वात सामान्य ऑपरेशन म्हणजे सबस्ट्रिंग मिळवणे."

7) मला स्ट्रिंगचा भाग कसा मिळेल?

"सबस्ट्रिंग पद्धत स्ट्रिंगचा भाग परत करते. या पद्धतीच्या दोन आवृत्त्या आहेत."

"पहिली आवृत्ती प्रारंभ आणि समाप्ती निर्देशांकांद्वारे निर्दिष्ट केलेले सबस्ट्रिंग परत करते. परंतु शेवटच्या निर्देशांकातील वर्ण समाविष्ट केलेला नाही! जर तुम्ही क्रमांक 1 आणि 3 पास केला, तर सबस्ट्रिंगमध्ये फक्त दुसरे आणि तिसरे वर्ण असतील (लक्षात ठेवा निर्देशांक सुरू होतात 0 सह)."

"दुसरी आवृत्ती पास केलेल्या इंडेक्सपासून स्ट्रिंगच्या शेवटपर्यंत सबस्ट्रिंग परत करते."

पद्धत उदाहरणे)
String substring(int beginIndex, int endIndex)
String s = "Good news, everyone!";
s = s.substring(1,6);
परिणाम:

s == "ood n";
String substring(int beginIndex)
String s = "Good news, everyone!";
s = s.substring(1);

"ते अगदी सोपे आहे. धन्यवाद, एली."

"मी तुम्हाला स्ट्रिंग ऑब्जेक्ट्सचे अंतर्गत कार्य देखील समजावून सांगणार आहे."

"तुम्हाला आधीच माहित आहे की, स्ट्रिंग हा एक अपरिवर्तनीय वर्ग आहे. आणि ते आम्हाला कोणते फायदे देते? जसे घडते तसे, मुख्य फायद्यांपैकी एक म्हणजे सबस्ट्रिंग मिळवण्याची क्षमता. परंतु प्रथम गोष्टी प्रथम."

"आंतरिकरित्या, स्ट्रिंग ऑब्जेक्टमध्ये अक्षरांचा एक अॅरे असतो, ज्याचा अंदाज लावणे कठीण नाही. परंतु ते आणखी दोन व्हेरिएबल्स देखील संग्रहित करते: अॅरेमधील पहिल्या वर्णाची अनुक्रमणिका आणि वर्ण संख्या. आता मी तुम्हाला सांगेन की हे काय आहेत साठी वापरले जातात."

"जेव्हा आपण सबस्ट्रिंग पद्धत वापरून सबस्ट्रिंग तयार करतो , तेव्हा एक नवीन स्ट्रिंग ऑब्जेक्ट तयार होतो."

"परंतु, नवीन कॅरेक्टर अॅरेचा संदर्भ संग्रहित करण्याऐवजी, ऑब्जेक्ट जुन्या अॅरेचा संदर्भ तसेच दोन व्हेरिएबल्स संग्रहित करते ज्याचा वापर तो त्याच्याशी संबंधित मूळ कॅरेक्टर अॅरेचा भाग निर्धारित करण्यासाठी करतो."

"मला त्यातले काही समजले नाही."

"जेव्हा सबस्ट्रिंग तयार केले जाते, तेव्हा कॅरेक्टर अॅरे नवीन स्ट्रिंग ऑब्जेक्टवर कॉपी केला जात नाही. त्याऐवजी, दोन्ही ऑब्जेक्ट्स मूळ कॅरेक्टर अॅरेचा संदर्भ संग्रहित करतात. परंतु! दुसरा ऑब्जेक्ट दोन व्हेरिएबल्स देखील संग्रहित करतो: अॅरेमध्ये त्याची सुरुवातीची अनुक्रमणिका आणि सबस्ट्रिंगशी संबंधित वर्णांची संख्या."

"ते पहा:"

सबस्ट्रिंग मिळवत आहे सबस्ट्रिंगमध्ये काय साठवले जाते
String s = "mama";
s मध्ये काय साठवले आहे:

char[] value = {'m','a','m','a'};
offset = 0;
count = 4;
String s2 = s.substring(1);
s2 मध्ये काय साठवले आहे:

char[] value = {'m','a','m','a'};
offset = 1;
count = 3;
String s3 = s.substring(1, 3);
s3 मध्ये काय साठवले आहे:

char[] value = {'m','a','m','a'};
offset = 1;
count = 2;

"तीन्ही स्ट्रिंग्स समान चार अॅरेचा संदर्भ संग्रहित करतात, परंतु ते त्यांच्याशी संबंधित असलेल्या पहिल्या आणि शेवटच्या वर्णांची अनुक्रमणिका देखील संग्रहित करतात. किंवा अधिक अचूकपणे, पहिल्या वर्णाची अनुक्रमणिका आणि वर्ण संख्या."

"त्याला आता अर्थ आहे."

"म्हणून, जर तुम्ही 10,000 वर्ण लांब असलेली स्ट्रिंग घेतली आणि तुम्ही कोणत्याही लांबीचे 10,000 सबस्ट्रिंग तयार केले, तर ही सबस्ट्रिंग्स फारच कमी मेमरी वापरतील, कारण कॅरेक्टर अॅरे डुप्लिकेट केलेले नाही. या स्ट्रिंग्स, ज्यांचा वापर तुम्हाला खूप होईल अशी अपेक्षा आहे. जागा, अक्षरशः फक्त दोन बाइट्स घेईल."

"छान!"

"पण जर तुम्ही स्ट्रिंग्समध्ये बदल करू शकलात तर तुम्ही ते करू शकता का?"

"नाही, कोणीतरी पहिली स्ट्रिंग बदलू शकते, आणि नंतर त्याचे सर्व सबस्ट्रिंग देखील बदलतील. आता त्यांनी असे का केले हे समजते. हा खरोखर छान उपाय आहे."

"तुला ते आवडले याचा मला आनंद आहे."