1. Stringसरणी

Stringमैं आपको सरणियों के बारे में एक संक्षिप्त विवरण देना चाहता हूँ ।

जैसा कि हमने पहले कहा, एक सरणी किसी भी प्रकार की हो सकती है। Stringइसका मतलब है कि आप एस की एक सरणी बना सकते हैं । यदि हम एक प्रोग्राम लिखना चाहते हैं जो "कीबोर्ड से 10 पंक्तियों को पढ़ता है और उन्हें उल्टे क्रम में प्रदर्शित करता है," यहां कोड कैसा दिखेगा:

Scanner console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
एक Scannerवस्तु बनाएँ
एक 10-तत्व सरणी वस्तु बनाएँ
0 से 9 तक लूप करें

कीबोर्ड से एक स्ट्रिंग पढ़ें और इसे सरणी के अगले सेल में सहेजें
9 से 0 तक लूप

सरणी में अगला सेल प्रदर्शित करें

कोड बमुश्किल बदला! सरणी बनाते समय हमें केवल intसे प्रतिस्थापित करना था । Stringठीक है, और कीबोर्ड से स्ट्रिंग पढ़ते समय, हमने nextInt()विधि को भी बदल दिया nextLine()


2. Stringस्मृति में सरणी

और एक और उपयोगी तथ्य। आइए 3 तस्वीरों पर विचार करें:

चित्र 1. किसी Stringवस्तु को स्मृति में कैसे व्यवस्थित किया जाता है:

स्मृति में स्ट्रिंग सरणी

यह तस्वीर पिछले पाठों से ली गई है।

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

चित्र 2। स्मृति में एक पूर्णांक सरणी कैसे व्यवस्थित की जाती है:

मेमोरी 2 में स्ट्रिंग सरणी

यह तस्वीर भी जानी पहचानी है।

चित्र 3. स्मृति में एक स्ट्रिंग सरणी कैसे व्यवस्थित की जाती है:

स्मृति में एक स्ट्रिंग सरणी कैसे व्यवस्थित की जाती है

बाईं ओर हम एक सरणी चर देखते हैं जिसका प्रकार है String[](यह एक सरणी वस्तु का पता संग्रहीत करता है)।

बीच में, हमारे पास Stringसरणी वस्तु ही है।

और दाईं ओर स्ट्रिंग ऑब्जेक्ट हैं जो कुछ टेक्स्ट स्टोर करते हैं।

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

सरणी कक्षों की तुलना करते समय इसे ध्यान में रखें :

String[] array = new String[10];

array[1] = "Hello";
array[2] = array[1];
array[3] = new String("Hello");
// Compare
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
10 स्ट्रिंग्स की एक सरणी बनाएँ

सरणी में मान डालें



false (संदर्भ समान हैं)
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"};