Kotlin中Array<IntArray>与Java int[][]的效率及对应关系问询
Kotlin中Java int[][]的对应类型与相关问题解析
1. 核心对应关系
Java的int[][]在Kotlin中的直接对应类型就是Array<IntArray>,这是官方定义的互映射关系:
- Kotlin的
IntArray等价于Java的int[] - Kotlin的
Array<T>等价于Java的T[](当T是IntArray时,自然对应int[][])
2. 开销与等价性说明
Array<IntArray>看起来比int[][]啰嗦,但二者在JVM运行时完全等价,没有额外开销:
IntArray本身就是对Javaint[]的轻量封装,没有多余的对象包装,内存布局和int[]完全一致Array<IntArray>本质就是“存着int[]对象引用的数组”,和Javaint[][]的内存模型完全相同,不存在额外性能损耗
3. Kotlin中表示Java int[][]的正确方式
直接使用Array<IntArray>即可,比如初始化一个3x3的二维int数组:
// 等价于Java的int[][] = new int[3][3]; val twoDIntArray: Array<IntArray> = Array(3) { IntArray(3) }
如果需要和Java代码互操作,直接传递Array<IntArray>类型的变量即可,JVM会自动将其视为int[][],无需额外转换。
4. 互操作类找不到问题排查
若出现运行时找不到Java类的情况,可从以下几点排查:
- 确认Java类的包名、类名拼写正确,Kotlin代码中已正确导入该类
- 检查项目编译配置,确保Java源代码目录被纳入编译范围(比如Gradle/Maven配置中是否包含Java源码集)
- 若Java类是内部类,需注意Kotlin中引用内部类的语法:
OuterClass.InnerClass(和Java一致,但要确保导入正确)
内容的提问来源于stack exchange,提问作者SMMH
相关产品推荐
相关产品推荐

