装箱与拆箱
- 在 Kotlin 中,装箱与拆箱涉及基本类型与它们的可空引用类型或泛型集合中的类型转换
-
基本类型在大多数情况下直接对应 JVM 的原始类型,不涉及装箱
-
当它们被用作可空类型或放入泛型集合时,会自动装箱为对应的包装类
kotlin
// 基本类型,不装箱
val a: Int = 100
// 可空类型,装箱
val b: Int? = 100
// 泛型集合,装箱
val list: List<Int> = listOf(100)
// 基本类型数组,不装箱
val array: IntArray = IntArray(1_000_000) { it }
- Kotlin 会自动处理装箱和拆箱
kotlin
// 自动装箱
val num: Int = 42
val boxedNum: Int? = num
kotlin
// 自动拆箱
val boxedNum: Int? = 42
val num: Int = boxedNum ?: 0