Kotlin笔记之数组

数组

创建数组

函数创建

创建长度为0的空数组

使用kotlin中的emptyArray函数

语法:

val array1 = emptyArray<数据类型>()

实例:

        val array1 = emptyArray<Int>()
        println("创建出来的数组长度:${array1.size}")
        println("创建出来的数组长度:${array1.contentToString()}")

日志输出结果:

创建出来的数组长度:0
创建出来的数组长度:[]

源码扩展:

/**
 * Returns an empty array of the specified type [T].
 */
public inline fun <reified @PureReifiable T> emptyArray(): Array<T> =
        @Suppress("UNCHECKED_CAST")
        (arrayOfNulls<T>(0) as Array<T>)
       
创建指定长度的空数组

使用kotlin中的函数arrayOfNulls

语法:

val a = arrayOfNulls<数据类型>(数组长度)

实例:

 		val a = arrayOfNulls<Int>(10);
        val b = arrayOfNulls<String>(10);
        val c = arrayOfNulls<Boolean>(10);
		println("Int类型的数组:${a.contentToString()}")
        println("String类型的数组:${b.contentToString()}")
        println("Boolean类型的数组:${c.contentToString()}")

日志输出结果:

Int类型的数组:[null, null, null, null, null, null, null, null, null, null]
String类型的数组:[null, null, null, null, null, null, null, null, null, null]
Boolean类型的数组:[null, null, null, null, null, null, null, null, null, null]

源码扩展:

public fun <reified @PureReifiable T> arrayOfNulls(size: Int): Array<T?>
创建已知所有元素的数组

kotlin类中arrayOf函数

语法:

 val a = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)

实例:

        val a = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
        val b = arrayOf("一", "二", "三")
        println("数组1:${a.contentToString()}")
        println("数组2:${b.contentToString()}")

日志输出结果:

数组1:[1, 2, 3, 4, 5, 6, 7, 8]
数组2:[一, 二, 三]

扩展:

源码:

public inline fun <reified @PureReifiable T> arrayOf(vararg elements: T): Array<T>
基础数据类型

可以直接指定数据类型的集合,方法与上方的arrayOf函数创建方法一致


public fun doubleArrayOf(vararg elements: Double): DoubleArray

public fun floatArrayOf(vararg elements: Float): FloatArray

public fun longArrayOf(vararg elements: Long): LongArray

public fun intArrayOf(vararg elements: Int): IntArray

public fun charArrayOf(vararg elements: Char): CharArray

public fun shortArrayOf(vararg elements: Short): ShortArray

public fun byteArrayOf(vararg elements: Byte): ByteArray

public fun booleanArrayOf(vararg elements: Boolean): BooleanArray

构造函数创建

使用Array类的构造函数创建

语法:

val a = Array<数据类型>(数组长度,闭包) 

实例:

 		val a = Array<Int>(10) { i: Int -> i + 1 }
        val b = Array<String>(10) { i: Int -> "我是第${i}位元素" }
        println("数组a:${a.contentToString()}")
        println("数组b:${b.contentToString()}")

日志输出:

数组a:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
数组b:[我是第0位元素, 我是第1位元素, 我是第2位元素, 我是第3位元素, 我是第4位元素, 我是第5位元素, 我是第6位元素, 我是第7位元素, 我是第8位元素, 我是第9位元素]

源码扩展:

package kotlin

public class Array<T> {

    public inline constructor(size: Int, init: (Int) -> T)

    public operator fun get(index: Int): T

    public operator fun set(index: Int, value: T): Unit

    public val size: Int

    public operator fun iterator(): Iterator<T>
}
基础数据类型Array类的构造函数创建数组

基础类型有很多,先拿int类型类做下说明,其他类似

语法:

		val a= IntArray(数组长度)
        val b=IntArray(数组长度,闭包)

因为IntArray有两个构造函数,所以可以使用两种方式创建

实例:

        val a= IntArray(10)
        val b=IntArray(10){i: Int -> i*10 }
        println("数组a:${a.contentToString()}")
        println("数组b:${b.contentToString()}")

输出日志:

数组a:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
数组b:[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

源码扩展:

public class IntArray(size: Int) {

    public inline constructor(size: Int, init: (Int) -> Int)

    public operator fun get(index: Int): Int

    public operator fun set(index: Int, value: Int): Unit

    public val size: Int

    public operator fun iterator(): IntIterator
}
所有基础数据类型集合
		val c = ByteArray(10)
        val d = CharArray(10)
        val e = ShortArray(10)
        val f = IntArray(10)
        val g = LongArray(10)
        val h = FloatArray(10)
        val i = DoubleArray(10)
        val j = BooleanArray(10)
        println("数组c:${c.contentToString()}")
        println("数组d:${d.contentToString()}")
        println("数组e:${e.contentToString()}")
        println("数组f:${f.contentToString()}")
        println("数组g:${g.contentToString()}")
        println("数组h:${h.contentToString()}")
        println("数组i:${i.contentToString()}")
        println("数组j:${j.contentToString()}")

日志输出:

数组c:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
数组d:[ ,  ,  ,  ,  ,  ,  ,  ,  ,  ]
数组e:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
数组f:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
数组g:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
数组h:[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
数组i:[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
数组j:[false, false, false, false, false, false, false, false, false, false]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值