"तुम्हें क्या लगता है, अमीगो? इंट के बाद सबसे लोकप्रिय जावा क्लास कौन सी है?"

"एली, तुमने मुझे पहले ही पाठ के शीर्षक में एक स्पॉइलर दे दिया है। यह है String!"

"वास्तव में, यह एक स्पॉइलर है। Stringबिल्कुल हर जगह इस्तेमाल किया जाता है। इसमें उपयोगी तरीकों का एक गुच्छा है जिसे आप जानना बेहतर समझते हैं।

" Stringकक्षा आदिम प्रकारों के अलावा एकमात्र वर्ग है जिसका शाब्दिक एक switchबयान में इस्तेमाल किया जा सकता है; संकलक एक विशेष तरीके से स्ट्रिंग जोड़ और स्ट्रिंग वस्तुओं को संभालता है; Stringवस्तुओं को एक विशेष तरीके से स्मृति में संग्रहित किया जाता है। मूल रूप से, Stringवर्ग एक बहुत ही है विशेष वर्ग।

"इसके अलावा, Stringकक्षा में सहायक वर्गों का एक समूह है जिसका उद्देश्य जावा में स्ट्रिंग्स के साथ काम करना और आसान बनाना है। जब आप यह सब सीखते हैं, तो आपके लिए बहुत कुछ करना वास्तव में बहुत आसान हो जाएगा।"

"मैं इंतजार नहीं कर सकता।"

"ठीक है, हम इस पारिस्थितिकी तंत्र के बहुत मूल से शुरू करेंगे - Stringवर्ग का संगठन। वर्ग की संरचना Stringवास्तव में बहुत सरल है: इसके अंदर एक वर्ण सरणी ( charसरणी) है जो स्ट्रिंग के सभी वर्णों को संग्रहीत करती है। के लिए उदाहरण के लिए, 'हैलो' शब्द इस प्रकार संग्रहीत किया जाता है:

स्ट्रिंग वर्ग की संरचना

यह महत्वपूर्ण है।

वास्तव में, यह बिल्कुल सटीक नहीं है। क्योंकि Stringवर्ग बहुत महत्वपूर्ण है, यह बहुत सारे अनुकूलन का उपयोग करता है, और डेटा को आंतरिक रूप से एक वर्ण सरणी के रूप में नहीं, बल्कि केवल एक बाइट सरणी के रूप में संग्रहीत किया जाता है।

स्ट्रिंग वर्ग के तरीके

कक्षा Stringमें बहुत सारी विधियाँ हैं: इसमें केवल 18 निर्माता हैं! इसलिए, नीचे मैं केवल सबसे अधिक उपयोग किए जाने वाले लोगों की सूची दूंगा:

तरीकों विवरण
int length()
स्ट्रिंग में वर्णों की संख्या लौटाता है
boolean isEmpty()
जांचता है कि स्ट्रिंग एक खाली स्ट्रिंग है या नहीं
boolean isBlank()
जाँचता है कि स्ट्रिंग में केवल खाली स्थान के वर्ण हैं: स्थान, टैब, नई पंक्ति, आदि।
char charAt(int index)
स्ट्रिंग में अनुक्रमणिका स्थिति पर वर्ण लौटाता है।
char[] toCharArray()
स्ट्रिंग बनाने वाले वर्णों की एक सरणी (प्रतिलिपि) लौटाता है
byte[] getBytes()
एक स्ट्रिंग को बाइट्स के सेट में कनवर्ट करता है और बाइट्स की सरणी देता है।
String[] split(String regex)
एक स्ट्रिंग को कई सबस्ट्रिंग में विभाजित करता है।
String join(CharSequence delimiter, elements)
एकाधिक सबस्ट्रिंग्स को एक साथ जोड़ता है
String intern()
स्ट्रिंग पूल में एक स्ट्रिंग डालता है।

"यह बहुत अच्छा लग रहा है!"

"चलो एक प्रोग्राम लिखते हैं जो एक फ़ाइल पथ को यूनिक्स शैली से विंडोज शैली में परिवर्तित करता है। यूनिक्स /फ़ोल्डर को अलग करने के लिए चरित्र का उपयोग करता है, जबकि विंडोज \चरित्र का उपयोग करता है।

समाधान 1. एक charसरणी का उपयोग करना

कोड टिप्पणियाँ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
एक स्कैनर ऑब्जेक्ट बनाएं
कंसोल से एक लाइन पढ़ें

एक स्ट्रिंग को एक वर्ण सरणी में बदलें
वर्णों पर लूप करें
यदि वर्ण है /,
तो इसे से बदलें \। भागने के बारे में मत भूलना।

वर्ण सरणी के आधार पर एक नया स्ट्रिंग बनाएँ।
स्ट्रिंग प्रदर्शित करें।

समाधान 2.split() और विधियों का उपयोग करना join():

कोड टिप्पणियाँ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
एक स्कैनर ऑब्जेक्ट बनाएं
कंसोल से एक लाइन पढ़ें स्ट्रिंग को स्ट्रिंग्स की

एक सरणी में कनवर्ट करें । चरित्र को एक विभाजक के रूप में प्रयोग किया जाता है (अतिरिक्त दो स्लैश डबल एस्केपिंग का परिणाम हैं)। स्ट्रिंग्स की सरणी में सभी स्ट्रिंग्स को कनेक्ट करें । एक विभाजक के रूप में प्रयोग किया जाता है (हम देखते हैं कि यह बच निकला है)। स्ट्रिंग प्रदर्शित करें।/
\

समाधान 3. विधि का उपयोग करना replace(char oldChar, char newChar):

कोड टिप्पणियाँ
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
एक स्कैनर ऑब्जेक्ट बनाएं
कंसोल से एक लाइन पढ़ें

बस एक वर्ण को दूसरे के साथ बदलें
(दूसरा बच गया है)
स्ट्रिंग प्रदर्शित करें।

"मुझे तीसरा समाधान सबसे अधिक पसंद आया। लेकिन मैं तीनों का अभ्यास करूँगा।"

"शाबाश, अमीगो। मैं देख रहा हूँ कि आप अपने नए ज्ञान को अभ्यास में लाने के लिए पहले से ही अधीर हैं। पाठ समाप्त हो गया है।"