美文网首页
Array和IntArray

Array和IntArray

作者: 主音King | 来源:发表于2020-08-20 11:22 被阅读0次

IntArray为什么存在

Array<Int>和IntArray不同存在。为什么要搞个IntArray?
还有DoubleArray、LongArray等

val intArray = intArrayOf(1,2,3)// IntArray类型
int[] array = new int[]{1,3,4};

上面两个是等价的,没有进行int的装箱。分析字节码几乎相同(除了行号)

val arrayOfInt = arrayOf(1,3,4)// Array<Int>类型

这种歧视是构造出一个Integer[],每加个数字,调用Integer.valueOf产生装箱。
一些写法:

        fun test() {
            states = arrayOfNulls(4)
            Log.d(TAG, "test-states:$states ${states!![0]}")
            states!![0] = intArrayOf(1, 1)
            states!![1] = intArrayOf(2, 2)
            for (i in states!!.indices) {
                if (states!![i] != null)
                    for (j in states!![i]!!.indices) {
                        Log.d(TAG, "test-i:$i j:$j ${states!![i]!![j]}")
                    }
            }
        }

总结

Kotlin不少类型是对Java的扩展,扩展不方便就编译期做映射(kotlin.String-->Java.lang.String,kotlin.collections.MutableMap-->java.util.Map)。kotlin是开源的,源码面前无秘密。
IntArray没有进行装箱/拆箱;Array<Int>进行了装箱/拆箱。IntArray性能更高,开销小,所以kotlin造出IntArray (int[]类似) 是有原因的。

相关文章

网友评论

      本文标题:Array和IntArray

      本文链接:https://www.haomeiwen.com/subject/hnurjktx.html