IntArray 與 Array在 Kotlin 中


在本文中,我們將透過一個例子來展示 Kotlin 中 **IntArray** 和 **Array<Int>** 之間的區別。

Kotlin 中的 IntArray

**IntArray** 是 Kotlin 中的一個類,表示元素陣列。此類的每個例項都表示為一個整數陣列。對於此類的建構函式,您需要傳入陣列中需要的元素數量(大小)。

您可以如下所示例項化此類:

val myArray = IntArray(8)

預設情況下,建立的陣列的所有元素都將初始化為“0”。

示例

以下程式透過例項化 **IntArray** 類來建立一個整數陣列:

fun main(args: Array<String>) {
   // Creating an object of the IntArray class
   val myArray = IntArray(3)

   // Populating the array
   myArray[0] = 21;
   myArray[1] = 10;
   myArray[2] = 8;

   // Converting the array to string
   val res = myArray.joinToString()
   println("Contents of the created array: "+res)
}

輸出

執行上述程式後,將生成以下輸出:

Contents of the created array: 21, 10, 8

Kotlin 中的 Array<Int>

**Array<T>** 是 Kotlin 中的一個類,它表示一個數組(也是一個原生 Java 陣列)。它是一個泛型類,即您可以指定要建立的陣列的型別 **(T)**。與 **IntArray** 類類似,您需要傳入陣列中需要的元素數量(大小)。Kotlin 中的語句 **Array<Int>** 建立一個整數陣列。您可以使用此類建立整數陣列,如下所示:

val myArray = Array(3) {0}

預設情況下,建立的陣列的所有元素都將初始化為“0”。

示例

以下程式透過例項化 Array 類來建立一個整數陣列:

fun main(args: Array<String>) {
   // Creating an object of the Array class
   val myArray = Array(3) {0}

   // Populating the array
   myArray[0] = 101;
   myArray[1] = 330;
   myArray[2] = 8;

   // Converting the array to string
   val res = myArray.joinToString()
   println("Contents of the created array: "+res)
}

輸出

執行上述程式後,將生成以下輸出:

Contents of the created array: 101, 330, 8

IntArray 與 Array<Int> 的比較

在內部,Array<Int> 建立一個 Integer 型別的陣列。這就像在 Java 中建立 Integer 類的例項一樣。使用此語法建立的值將被裝箱。而 IntArray 建立的陣列類似於 Java 的原始陣列。

考慮以下示例:

// Creating an integer array using the IntArray class
val myArray1 = IntArray(1)

// Creating an integer array using the Array class
val myArray2 = Array(3){1}

您可以編譯此行並使用 javap 命令驗證其位元組碼,如下所示:

> kotlinc Test.kt
> javap -c -p Testkt

對第一個語句執行此操作後,您可以觀察到內部建立了一個簡單的陣列。

而對於第二個語句,您可以觀察到該陣列已轉換為 **java.lang.Integer (Integer[])** 陣列。

更新於:2022年3月16日

7000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.