1. Stringवर्ग की संरचना

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

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

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

वर्णों की श्रंखला

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

स्ट्रिंग वर्ग की संरचना
महत्वपूर्ण!

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


2. 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()
में एक तार डालता है string pool

आप जावा कंस्ट्रक्टर्स लेख में कंस्ट्रक्टर्स के बारे में अधिक जान सकते हैं ।

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

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

कोड टिप्पणियाँ
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);
एक स्कैनर ऑब्जेक्ट बनाएं
कंसोल से एक लाइन पढ़ें

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