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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告