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[])** 数组。
广告