數(shù)組在Kotlin中使用Array類來表示桑腮。下面巴拉一下Kotlin數(shù)組和Java數(shù)組的區(qū)別抖坪。
Java中的數(shù)組通常的聲明方式有以下兩種:
int[] intArray = new int[6];//表達(dá)式:數(shù)據(jù)類型[] 標(biāo)識 = new 數(shù)據(jù)類型[長度];
String[] strArray = {"value0","value1"};//表達(dá)式: 數(shù)據(jù)類型[] 標(biāo)識 = {value0,value1,...}
Kotlin的數(shù)組Array類中定義了get瘦棋、set函數(shù)以及size(相當(dāng)于java數(shù)組的length)的屬性被廓。
Kotlin中創(chuàng)建數(shù)組:
- 一般創(chuàng)建數(shù)組,直接使用arrayOf(),就可以創(chuàng)建一個數(shù)組
val arr = arrayOf(1, 2, 3)
- 基本類型數(shù)組:ByteArray,LongArray等這些類是基本類型數(shù)組党觅,但是跟Array類沒有繼承關(guān)系术荤,但是它們有相同的屬性集倚喂。Kotlin中的數(shù)組是不能型變得,也就是說Array<Int>不能賦值給Array<Any>
val intArr: IntArray = intArrayOf(1,2,3)
val longArr: LongArray = longArrayOf(1L,2L,3L)
val floatArr: FloatArray = floatArrayOf(1.0f,2.0f,3.0f)
val doubleArr: DoubleArray = doubleArrayOf(1.0,2.02,3.03333)
val booleanArr: BooleanArray = booleanArrayOf(false,true,false)
- 創(chuàng)建指定長度的數(shù)組且無元素瓣戚,相當(dāng)于 java中的 int[] intArray = new int[6]
val fixedSizeArr = arrayOfNulls<Int>(6) //arrayOfNulls<數(shù)據(jù)類型>(長度)务唐,默認(rèn)值都是null
- 使用閉包進(jìn)行初始化,
val arr = Array(3,{it -> it.inc()})//參數(shù)1:數(shù)組大小带兜,參數(shù)2:一個函數(shù)參數(shù)的工廠函數(shù)
for(i in arr){
println(i)
}
結(jié)果:
1
2
3
- 創(chuàng)建空數(shù)組
val empty = emptyArray<Int>()
- 固定長度的基本類型數(shù)組,基本類型數(shù)組比Array多一個主構(gòu)造函數(shù)枫笛,可以僅用傳入長度,就可以創(chuàng)建一個基本類型對象
val intArray = IntArray(3)
val arr = Array(3) //編譯錯誤
訪問數(shù)組的元素
val intArr = intArrayOf(1,2,3)
for(item in intArr){
println(item)//遍歷intArr里面的元素刚照,item就是元素本身
}
for (index in intArr.indices){
println(intArr[index])//遍歷initArr索引的元素刑巧,從0開始
println(intArr.get(index))//可以通過get(索引)來獲取元素
}
修改數(shù)組數(shù)據(jù)
val intArr = intArrayOf(1,2,3)
for (index in intArr.indices){
intArr[index] = 0 //與java一樣,可以這樣修改數(shù)據(jù)
intArr.set(index,1) //kotlin可以通過set函數(shù)進(jìn)行修改數(shù)據(jù)
}
二維數(shù)組
//基本類型的二維數(shù)組
val arr = Array(3){IntArray(3)}//三個長度為3的Int數(shù)組的二維數(shù)組
print(arr[1][1])
for (one in arr){
println()
for (two in one){
print(two)
}
}
//自定義類型的二維數(shù)組
fun main(args: Array<String>) {
//三個長度為3的Demo類型的二維數(shù)組无畔,自定義類型的話需要在大括號里面操作
val arrClass = Array(3){Array<Demo>(3,{i: Int -> Demo(i) })}
for (demos in arrClass){
println()
for (demo in demos){
print("${demo.mNum} ")
}
}
}
class Demo(num: Int){
var mNum: Int? = null
init {
this.mNum = num
}
}
三維數(shù)組以及多維數(shù)組
//你要的三維數(shù)組 ( ̄▽ ̄)"
val arr = Array<Array<IntArray>>(3){Array<IntArray>(3){IntArray(3)}}
什么啊楚?發(fā)生了什么?kotlin;胝谩9Ю怼!我問你郭变,你的簡介易讀性呢颜价??
O(∩_∩)O 不存在的
//嫌棄 (ノ`Д)ノ
val arrA = Array<Array<IntArray>>(3){Array<IntArray>(3){IntArray(3)}}
/正解
val arrB = Array(3){Array(3){IntArray(3)}}
for (one in arrB)
for (two in one)
for (three in two)
println(three)
多維數(shù)組繼續(xù)嵌套就可以咯诉濒。