美文网首页
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