Array<Int>एक है Integer[], जबकि, हुड के नीचे IntArrayएक है int[]। बस।
इसका मतलब यह है कि जब आप एक Intमें डालते हैं Array<Int>, तो यह हमेशा बॉक्सिंग किया जाएगा (विशेष रूप से, एक Integer.valueOf()कॉल के साथ )। के मामले में IntArray, कोई मुक्केबाज़ी नहीं होगी, क्योंकि यह एक जावा आदिम सरणी में अनुवाद करता है।
उपरोक्त के संभावित प्रदर्शन निहितार्थ के अलावा, विचार करने की सुविधा भी है। आदिम सरणियों को असंवैधानिक रूप से छोड़ा जा सकता है और उनके 0सभी सूचकांक में डिफ़ॉल्ट मान होंगे । यही कारण है कि IntArrayऔर बाकी के आदिम सरणियों में निर्माणकर्ता हैं जो केवल एक आकार पैरामीटर लेते हैं:
val arr = IntArray(10)
println(arr.joinToString())
इसके विपरीत, Array<T>एक निर्माणकर्ता नहीं होता है जो केवल एक आकार पैरामीटर लेता है: इसे Tनिर्माण के बाद एक वैध स्थिति में रहने के लिए सभी अनुक्रमित पर वैध, गैर-शून्य उदाहरणों की आवश्यकता होती है । के लिए Numberप्रकार, यह डिफॉल्ट हो सकता है 0, लेकिन वहाँ एक मनमाना प्रकार का डिफ़ॉल्ट उदाहरण बना करने के लिए कोई रास्ता नहीं है T।
इसलिए जब एक बनाने Array<Int>, आप या तो निर्माणकर्ता का उपयोग कर सकते हैं जो एक इनिशियलाइज़र फ़ंक्शन भी लेता है:
val arr = Array<Int>(10) { index -> 0 }
val arr = Array(10) { 0 }
या Array<Int?>हर मूल्य को इनिशियलाइज़ करने से बचने के लिए एक बनाएं , लेकिन फिर आपको बाद nullमें सरणी से पढ़े जाने वाले संभावित मूल्यों से निपटने के लिए मजबूर किया जाएगा ।
val arr = arrayOfNulls<Int>(10)
Array<Int>करने के लिए compilesInteger[](यदि संकलक इस अनुकूलन नहीं करता)