數(shù)組并不是只針對數(shù)字來說的。僅限于數(shù)字的那是數(shù)學范疇的數(shù)列系枪。計算機編程里的數(shù)組是把一堆數(shù)據(jù)編成了組雀哨。
數(shù)組可以是整型數(shù)組、字符型數(shù)組私爷、字符串數(shù)組雾棺、對象數(shù)組、長整型數(shù)組衬浑、短整型數(shù)組捌浩、字節(jié)數(shù)組、布爾型數(shù)組....
舉一些例子
val arrayOfInt:IntArray = intArrayOf(1,3,5,7)
val arrayOfChar:CharArray = charArrayOf('H','e','l','l','o','W','o','r','l','d')
val arrayOfString:Array<String> = arrayOf("我","是","碼農(nóng)")
val arrayOfPerson:Array<person> = arrayOf(person("張"), person("王"), person("李"))
最后一個 Array<person>是前節(jié)使用過的對象工秩,這里建成數(shù)組來使用尸饺。
當建立 arrayOfPerson 時會提示,我們需要選定一個 person 助币。因為我們的程序中有不只一個侵佃。這里我們選定 com.cofox.kotlin.mydo.work 下的 person。
為了簡單書寫奠支,就要 import 這個類
import com.cofox.kotlin.mydo.work.person
數(shù)組有長度,說的就是數(shù)組元素的個數(shù)抚芦。我們用size來獲取
println(arrayOfInt.size)
這行代碼會輸出
4
同時倍谜,我們可以使用 for 循環(huán)遍歷數(shù)組
for(int in arrayOfInt){
println(int)
}
它會把 arrayOfInt 所有的元素都遍歷輸出
1
3
5
7
單獨輸出數(shù)組中的某個元素,可以使用數(shù)組元素的下標來指定
println(arrayOfPerson[1])
它會輸出 arrayOfPerson 數(shù)組中的第2個元素叉抡。這里尔崔,我們要再看一下 person 類。如何讓這個對象可以直接輸出呢褥民?
class person(var firstName:String){
override fun toString(): String {
return "老$firstName"
}
}
在類中重寫 toString() 方法即可季春。這樣當 print 這個類時,就可以打印 "老*"了消返。
老王
數(shù)組元素的修改也比較簡單载弄,直接賦值即可
arrayOfPerson[1] = person("劉")
println(arrayOfPerson[1])
于是輸出變成了
老劉
字符數(shù)組在輸出的時候耘拇,可以使用 joinToString 來轉(zhuǎn)成字符串。joinToString 的默認的元素分割符是 ","宇攻,我們可以使用 "" 來取消逗號惫叛。這樣
println(arrayOfChar.joinToString(""))
就會輸出
HelloWorld
數(shù)組的輸出也可以只輸出其中的一段。這里使用切片來實現(xiàn)逞刷。
println(arrayOfChar.slice(3..5))
這行代碼會輸出 arrayOfChar 中元素下標為 3 到 5 的元素
[l, o, W]
使用 slice 切片時嘉涌,要注意不能超出數(shù)組范圍,否則會報錯夸浅。比如
println(person::class.java.name.slice(0..person::class.java.name.length))
這行代碼會報錯仑最,因為 person::class.java.name.length 所代表的數(shù)字,不在 person::class.java.name 的元素下標范圍內(nèi)帆喇。改成下面這樣就能正常輸出了警医。
println(person::class.java.name.slice(0..person::class.java.name.length-1))
輸出的內(nèi)容是
com.cofox.kotlin.mydo.work.person