----《第一季Kotlin崛起:次世代Android開發(fā) 》學(xué)習(xí)筆記
總目錄:每天學(xué)一點(diǎn) Kotlin ---- 目錄
上一篇:每天學(xué)一點(diǎn) Kotlin -- 控制流:多元判斷
下一篇:每天學(xué)一點(diǎn) Kotlin -- 字符串和字符
1. 介紹
1.1 Kotlin 支持其他語(yǔ)言中常見的兩種循環(huán):while 和 for 循環(huán)先嬉。while 循環(huán)的語(yǔ)法和C院究、Java中一樣的宪彩。for 循環(huán)的語(yǔ)法和 Java 中的 forEach 的語(yǔ)法很像。
2. for 循環(huán)
2.1 for 循環(huán)的語(yǔ)法如下:
for(單項(xiàng) in 集合){
// 具體的操作...
}
其中,“單項(xiàng)”是一個(gè)常量,不需要再添加 val 關(guān)鍵字了。而且它只在 for 循環(huán)的大括號(hào)內(nèi)部使用痰哨。
2.2 Kotlin 中的 for 循環(huán)用于迭代任何一個(gè)預(yù)定義或者擴(kuò)展了一個(gè)名為 iterator 的函數(shù)。所有集合類型都提供了這個(gè)函數(shù)匾嘱。舉個(gè)栗子:
fun main(args: Array<String>) {
testFor_01()
}
fun testFor_01() {
val list = listOf(2, 3, 5, 6, 8)
for (k in list) {
print(" " + k)
}
println()
val set = setOf(1, 2, 3, 4)
for (k in set) {
print(" ${k}")
}
}
打印結(jié)果:
2 3 5 6 8
1 2 3 4
2.3 一個(gè)對(duì)象想要被 for 循環(huán)使用斤斧,需要實(shí)現(xiàn)一個(gè) iterator 的函數(shù)。這個(gè)函數(shù)必須返回一個(gè)提供了實(shí)現(xiàn)以下兩個(gè)操作符函數(shù)的對(duì)象實(shí)例:
operator fun hasNext() : Boolean
operator fun next() : T
編譯器不會(huì)糾結(jié)于任何特定的接口奄毡,只要這個(gè)對(duì)象返回這兩個(gè)函數(shù)就可以折欠。比如,系統(tǒng)提供的字符串類 String吼过,Kotlin 已經(jīng)提供了一個(gè) iterator 擴(kuò)展函數(shù)锐秦,所以 String 能用 for 循環(huán)進(jìn)行迭代。
fun testFor_02() {
val str = "努力學(xué)習(xí)Kotlin"
for (item in str) {
print(item + " ")
}
println()
val arr = arrayOf(1, 2, 3, 4, 5, 6)
for (item in arr) {
print(" " + item)
}
}
打印結(jié)果:
努 力 學(xué) 習(xí) K o t l i n
1 2 3 4 5 6
2.4 對(duì)于 Java 或 C 中的 for 的指定次數(shù)的循環(huán)盗忱,Java 中寫法為:
for(int i = 0; i < 100; i++){
System.out.println("" + i)
}
在Kotlin中酱床,相應(yīng)的寫法為:
for(i in 1..100){
println("" + i)
}
3. while 循環(huán)
while 循環(huán)的語(yǔ)法和C、Java中一樣的趟佃,舉例如下:
fun main() {
var i = 0
while(i < 4){
i++
println("這是一個(gè)有限循環(huán)...")
}
// while(true){
// println("這是一個(gè)無(wú)限循環(huán)...")
// }
}