有趣的 Kotlin 0x0D: IntArray vs Array<Int>
介绍
IntArray
整数数组。在 JVM 平台上,对应 int[]。
Array
Array<T> 表示 T 类型数组。在 JVM 平台上,Array<Int> 对应 Integer[]。
验证
fun main() {
val one = IntArray(10) { it }
val two = Array<Int>(10) { it }
}
Decompile
综上,在 JVM 平台上,IntArray 与 Array<Int> 的区别在于对应的类型不同,一个是基础类型 int 数组,另外一个是封装类型 Integer 数组,有装箱开销。
开销差距
一般情况下,看不出差距,只能用放大镜看一下了。
@OptIn(ExperimentalTime::class)
fun main() {
val duration1 = measureTime {
case1()
}
println(duration1)
val duration2 = measureTime {
case2()
}
println(duration2)
}
private fun case1() {
val t = IntArray(10_000_000)
}
private fun case2() {
val t = Array<Int>(10_000_000) { it }
}
使用场景
- 默认使用
IntArray,基础类型因无装箱开销而性能好,且每个元素都有默认值0。 - 如果数组需要使用
null值,使用Array<Int>。
StackOverflow
高赞回答,一言以蔽之。
作者:易冬
链接:https://juejin.cn/post/7126371358409228319
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。