1. String
सरणी
String
मैं आपको सरणियों के बारे में एक संक्षिप्त विवरण देना चाहता हूँ ।
जैसा कि हमने पहले कहा, एक सरणी किसी भी प्रकार की हो सकती है। String
इसका मतलब है कि आप एस की एक सरणी बना सकते हैं । यदि हम एक प्रोग्राम लिखना चाहते हैं जो "कीबोर्ड से 10 पंक्तियों को पढ़ता है और उन्हें उल्टे क्रम में प्रदर्शित करता है," यहां कोड कैसा दिखेगा:
|
एक Scanner वस्तु बनाएँ एक 10-तत्व सरणी वस्तु बनाएँ 0 से 9 तक लूप करें कीबोर्ड से एक स्ट्रिंग पढ़ें और इसे सरणी के अगले सेल में सहेजें 9 से 0 तक लूप सरणी में अगला सेल प्रदर्शित करें |
कोड बमुश्किल बदला! सरणी बनाते समय हमें केवल int
से प्रतिस्थापित करना था । String
ठीक है, और कीबोर्ड से स्ट्रिंग पढ़ते समय, हमने nextInt()
विधि को भी बदल दिया nextLine()
।
2. String
स्मृति में सरणी
और एक और उपयोगी तथ्य। आइए 3 तस्वीरों पर विचार करें:
चित्र 1. किसी String
वस्तु को स्मृति में कैसे व्यवस्थित किया जाता है:
यह तस्वीर पिछले पाठों से ली गई है।
कृपया ध्यान दें कि स्ट्रिंग का पाठ सीधे चर में संग्रहीत नहीं होता है: इसके लिए मेमोरी का एक अलग ब्लॉक आवंटित किया जाता है। एक String
चर उस वस्तु के पते (संदर्भ) को संग्रहीत करता है जो पाठ को संग्रहीत करता है।
चित्र 2। स्मृति में एक पूर्णांक सरणी कैसे व्यवस्थित की जाती है:
यह तस्वीर भी जानी पहचानी है।
चित्र 3. स्मृति में एक स्ट्रिंग सरणी कैसे व्यवस्थित की जाती है:
बाईं ओर हम एक सरणी चर देखते हैं जिसका प्रकार है String[]
(यह एक सरणी वस्तु का पता संग्रहीत करता है)।
बीच में, हमारे पास String
सरणी वस्तु ही है।
और दाईं ओर स्ट्रिंग ऑब्जेक्ट हैं जो कुछ टेक्स्ट स्टोर करते हैं।
सरणी की कोशिकाएँ String
स्वयं स्ट्रिंग्स (स्ट्रिंग ऑब्जेक्ट्स का पाठ) को संग्रहीत नहीं करती हैं। इसके बजाय, वे अपने पते (उनके संदर्भ) संग्रहीत करते हैं। उसी तरह String
वेरिएबल्स स्ट्रिंग ऑब्जेक्ट्स के पते स्टोर करते हैं (जहां टेक्स्ट स्टोर किया जाता है)।
सरणी कक्षों की तुलना करते समय इसे ध्यान में रखें :
|
10 स्ट्रिंग्स की एक सरणी बनाएँ सरणी में मान डालें true (संदर्भ समान हैं) false (संदर्भ समान नहीं हैं)true (स्ट्रिंग्स समान हैं) true (स्ट्रिंग्स अभी भी समान हैं) |
3. जावा में फास्ट ऐरे इनिशियलाइज़ेशन
सारणियाँ अत्यधिक उपयोगी होती हैं, इसलिए जावा के रचनाकारों ने उनके साथ कार्य को यथासंभव सुविधाजनक बनाने का प्रयास किया।
उन्होंने जो पहला काम किया, वह था सरणी इनिशियलाइज़ेशन को आसान बनाना, वह प्रक्रिया जिसके द्वारा आप किसी सरणी के प्रारंभिक मानों की आपूर्ति करते हैं।
आखिरकार, कहीं से पढ़े गए डेटा के अलावा, प्रोग्राम को काम करने के लिए अक्सर अपने स्वयं के आंतरिक डेटा की भी आवश्यकता होती है। उदाहरण के लिए, मान लीजिए कि हमें प्रत्येक महीने की लंबाई को सरणी में संग्रहित करने की आवश्यकता है। कोड ऐसा दिखाई दे सकता है:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
लेकिन जावा के रचनाकारों के लिए धन्यवाद, इसे और अधिक संक्षेप में लिखने का एक तरीका है:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
आप अल्पविराम द्वारा अलग किए गए सरणी के सभी मानों को आसानी से सूचीबद्ध कर सकते हैं!
सुविधाजनक, है ना? लेकिन वह सब नहीं है।
जैसा कि होता है, संकलक सरणी के मानों के प्रकार के आधार पर कंटेनर (सरणी वस्तु) के प्रकार को निर्धारित कर सकता है। और सरणी की लंबाई निर्धारित करने के लिए, घुंघराले ब्रेसिज़ में लिखे गए तत्वों की संख्या को गिनना तुच्छ है।
इसका मतलब है कि यह कोड और भी छोटा लिखा जा सकता है:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
सुंदरता की बात है, है ना? 🙂
इसे "फास्ट एरे इनिशियलाइज़ेशन" कहा जाता है। वैसे, यह के अलावा अन्य प्रकारों के लिए काम करता है int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION