Java String[] से Kotlin: शुरुआती लोगों के लिए पूरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: यह सवाल Java से Kotlin में आने वाले हर व्यक्ति को क्यों परेशान करता है

\n\n

आपने अभी-अभी Java के बाद Kotlin सीखना शुरू किया है और पहले ही एक अप्रत्याशित समस्या का सामना कर रहे हैं? आप Java की तरह स्ट्रिंग ऐरे घोषित करने का प्रयास कर रहे हैं — String[] names = {"Alice", "Bob"} — और Kotlin कंपाइलर एक त्रुटि दे रहा है? बधाई हो, आप अकेले नहीं हैं। सवाल "What's the Kotlin equivalent of Java's String[]?" ने Stack Overflow पर हज़ारों बार देखा गया है, और यह कोई संयोग नहीं है।

\n\n

Kotlin केवल "चीनी के साथ Java" नहीं है। Google इसे अधिक आधुनिक, सुरक्षित और संक्षिप्त भाषा के रूप में प्रस्तुत करता है। लेकिन यह संक्षिप्तता कभी-कभी शुरुआती लोगों को भ्रमित करती है। Java में, ऐरे भाषा का एक अंतर्निहित निर्माण है। Kotlin में, ऐरे मानक लाइब्रेरी का हिस्सा हैं, और उनकी अपनी ख़ासियतें हैं।

\n\n

इस लेख में, हम Kotlin स्ट्रिंग ऐरे के बारे में वह सब कुछ समझेंगे जो आपको जानना चाहिए। आप न केवल String[] का सीधा समतुल्य सीखेंगे, बल्कि अधिक लचीले विकल्प भी सीखेंगे जो आपके कोड को साफ और सुरक्षित बनाएंगे। चलिए शुरू करते हैं!

\n\n

1. सीधा समतुल्य: Array<String>

\n\n

Kotlin में String[] को बदलने का सबसे सरल और स्पष्ट तरीका Array<String> का उपयोग करना है। Kotlin में, सभी ऐरे Array<T> क्लास के ऑब्जेक्ट हैं, जहाँ T एलिमेंट का प्रकार है।

\n\n

कैसे घोषित और इनिशियलाइज़ करें?

\n\n

Java में आप लिखते हैं:

\n
String[] names = new String[3];\nnames[0] = "Alice";\nnames[1] = "Bob";\nnames[2] = "Charlie";
\n\n

Kotlin में यह इस प्रकार दिखता है:

\n
val names: Array<String> = arrayOfNulls(3)\nnames[0] = "Alice"\nnames[1] = "Bob"\nnames[2] = "Charlie"
\n\n

लेकिन एक बहुत छोटा तरीका भी है — arrayOf() फ़ंक्शन का उपयोग करें:

\n
val names = arrayOf("Alice", "Bob", "Charlie")
\n\n

Kotlin कंपाइलर स्वचालित रूप से Array<String> प्रकार का अनुमान लगाएगा। ध्यान दें: Java के विपरीत, Kotlin में ऐरे बनाने के लिए new ऑपरेटर नहीं है। इसके बजाय, फ़ैक्टरी फ़ंक्शन का उपयोग किया जाता है।

\n\n

महत्वपूर्ण अंतर: निश्चित आकार

\n\n

Java की तरह, Array<String> का आकार निश्चित होता है। आप इसे बनाने के बाद कोई नया एलिमेंट नहीं जोड़ सकते। यदि आप लंबाई से बाहर किसी इंडेक्स तक पहुँचने का प्रयास करते हैं, तो आपको ArrayIndexOutOfBoundsException मिलेगा।

\n\n
val fruits = arrayOf("Apple", "Banana")\n// fruits[2] = "Cherry" // त्रुटि! इंडेक्स सीमा से बाहर है
\n\n

2. विशेषीकृत ऐरे: हमेशा Array<String> नहीं

\n\n

प्रिमिटिव प्रकारों (Int, Double, Boolean) के लिए, Kotlin अनुकूलित क्लास प्रदान करता है: IntArray, DoubleArray, BooleanArray आदि। वे ऑटो-अनबॉक्सिंग (boxing/unboxing) का उपयोग नहीं करते हैं, जिससे मेमोरी बचती है और निष्पादन तेज़ होता है।

\n\n

लेकिन स्ट्रिंग के लिए ऐसा कोई अनुकूलन नहीं है, क्योंकि String एक रेफरेंस प्रकार है, प्रिमिटिव नहीं। इसलिए, यदि आपको वास्तव में ऐरे की आवश्यकता है, तो Array<String> ही एकमात्र विकल्प है।

\n\n

3. विकल्प #1: List<String> (अपरिवर्तनीय सूची)

\n\n

अधिकांश मामलों में, आपको ऐरे की आवश्यकता नहीं है। Kotlin में, यदि आप निम्न-स्तरीय कोड (जैसे JNI या नैनोसेकंड स्तर पर प्रदर्शन अनुकूलन) के साथ काम नहीं कर रहे हैं, तो ऐरे के बजाय सूचियों का उपयोग करने की दृढ़ता से अनुशंसा की जाती है।

\n\n

सूची List<String> एक अपरिवर्तनीय संग्रह है। आप इसे बनाने के बाद इसका आकार या एलिमेंट नहीं बदल सकते। यह मल्टी-थ्रेडेड वातावरण में कोड को अधिक सुरक्षित बनाता है।

\n\n
val namesList: List<String> = listOf("Alice", "Bob", "Charlie")\n// namesList[0] = "Eve" // त्रुटि! listOf एक अपरिवर्तनीय सूची लौटाता है
\n\n

वास्तव में, listOf अतिरिक्त सुरक्षा के साथ Java String[] का Kotlin समतुल्य है। Java में, किसी ऐरे को किसी अन्य विधि में पास करके गलती से बदला जा सकता है। Kotlin में List ऐसा नहीं होने देता।

\n\n

4. विकल्प

ब्लॉग

पुस्तक अनुशंसाएँ