文章目录
数组
创建数组
函数创建
创建长度为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]