Kotlin雖然能調(diào)用java類庫(kù),但存在很大的語(yǔ)法差異,有語(yǔ)言基礎(chǔ)的同學(xué),學(xué)起來(lái)可以通過(guò)類比的方式循序漸進(jìn)。由于我之前一直使用java進(jìn)行Android開(kāi)發(fā),學(xué)起來(lái)比較順手。
參考網(wǎng)上資料整理了kotlin中的關(guān)鍵字(可能有遺漏,請(qǐng)回復(fù)補(bǔ)充)
by、as、lazy、init、downTo、when、in、is、and、or
聲明:open、sealed、override、fun、inline、internal、data、companion、object、lateinit、var、val
數(shù)據(jù)類型:Any(Object)、Unit(Void)
基本類型:Byte、Char、Short、Int、Float、Long、Double、Boolean
kotlin中基本數(shù)據(jù)類型作為對(duì)象存在,在實(shí)際開(kāi)發(fā)中參考api使用。
字符串
不同于Java中的表現(xiàn)形式,使用$符號(hào)進(jìn)行字符串拼接,$支持表達(dá)式,用{}括弧。
val a = "test"http://定義字符串
val a1=a[1]//結(jié)果為e
val b = "copy $a" ?//字符串拼接使用$,結(jié)果為copy test,當(dāng)然java中的+也支持,不推薦
val c = "a+b=${a+b}"http://$支持表達(dá)式,結(jié)果為a+b=copy testtest
val d ="${'$'}9.99"http://結(jié)果為$9.99
if條件表達(dá)式
kotlin中if不再是一個(gè)條件判斷語(yǔ)句,而是表達(dá)式,有返回值,因此也不需要三目運(yùn)算符(xx?xx:xx)。
val a:Int=1
val b:Int=2
val c:Boolean=if(a<b) {
? ? ? print(a)
? ? ? true
? }else{
? ? ? ?print(b)
? ? ? ?false
? ?} ?//返回true
fun max(a:Int,b:Int) = if(a>b) a else b //判斷大小,返回b
另一個(gè)強(qiáng)大的判斷語(yǔ)句when
代替了java中的switch...case,條件可以是基本數(shù)據(jù)類型、字符串、表達(dá)式,語(yǔ)法自由的lambda表達(dá)式,具體參考如下實(shí)例代碼。

可將邏輯判斷結(jié)果賦值給常量、變量,甚至可以作為函數(shù)返回值

when語(yǔ)句必須包含else分支,類似java switch里的default分支。
in關(guān)鍵字
判斷一個(gè)對(duì)象是否在某個(gè)區(qū)間內(nèi),使用in關(guān)鍵字,也可當(dāng)做java中for each遍歷數(shù)組、集合,也可判斷某個(gè)元素是否在集合中,更多功能在實(shí)際開(kāi)發(fā)中能使用到。

in關(guān)鍵字的內(nèi)部實(shí)現(xiàn)原理:
for( int i = first ; i != last ; i += step){
//.........
}
Return、Break和Continue
這3個(gè)關(guān)鍵字在kotlin中的使用與java中略微不同,kotlin中任何表達(dá)式都可以使用標(biāo)簽(xx@)標(biāo)記,并且函數(shù)可以嵌套,因此我們可以使用標(biāo)簽來(lái)限制return、break、continue的使用。

上述運(yùn)行結(jié)果是:
i=1,j=5
i=0
continue,i=1,j=5
i=2
break,j=5
i=3
i=4
continue,i=5,j=1
Process finished with exit code 0
通過(guò)運(yùn)行上述代碼,我們可以理解標(biāo)簽的作用,自己動(dòng)手敲一遍代碼比copy理解的更透徹。
return的使用稍有不同,請(qǐng)看如下實(shí)例代碼:

運(yùn)行結(jié)果:
return,k=1
return,k=3
return,k=5
return,k=7
return,k=9
Process finished with exit code 0
代碼簡(jiǎn)潔,實(shí)際操作過(guò)程中,可通過(guò)標(biāo)簽的有無(wú)運(yùn)行上述代碼進(jìn)行理解。不多解釋。