You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中intArrayOf()与arrayOf()的区别是什么?

Kotlin中intArrayOf()与arrayOf()的本质区别

先澄清误区:Kotlin表面语法层没有暴露原始类型的概念,但在与JVM交互的底层实现中,原始类型数组和装箱数组是完全区分开的,这两个方法的差异正源于此:

  • intArrayOf():创建的是JVM层面的int[]原始类型数组,直接存储原始int值,不存在装箱开销,内存占用更小、运行性能更高。示例代码:

    val intArr = intArrayOf(1, 2, 3)
    // 对应JVM字节码中的int[]类型
    
  • arrayOf():创建的是Array<Int>类型,对应JVM层面的Integer[]装箱数组,每个元素都是Int类型的装箱对象(即JVM的Integer实例)。示例代码:

    val boxedArr = arrayOf(1, 2, 3)
    // 对应JVM字节码中的Integer[]类型
    

所谓“Kotlin中不存在原始类型”的说法,是因为Kotlin用统一的Int类型封装了原始int和装箱Integer的逻辑,编译器会根据上下文自动处理装箱/拆箱,但在数组场景下,IntArray(intArrayOf的返回类型)和Array<Int>是完全不同的类型,无法直接互相赋值;遍历IntArray时也不需要拆箱操作,效率明显高于Array<Int>。

你可以通过javap工具反编译字节码来验证这一点,能清晰看到两种数组的底层类型差异。

内容的提问来源于stack exchange,提问作者Dmitriy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:20:43