1.1 Kotlin初體驗(yàn)
從小例子開始看看Kotlin代碼長什么樣子摔桦。
下面這個(gè)例子靠益,
定義了一個(gè)Person類來表示"人"疮鲫,創(chuàng)建一個(gè)”人“的集合,查找其中年紀(jì)最大的人昏苏,并打印結(jié)果尊沸。
data class Person(val name:String , val age:Int?= null)
fun main(args: Array<String>) {
val persons = listOf(Person("kingsley") , Person("Deng" , age = 25))
val oldest = persons.maxBy{ it.age ?: 0}
println("The oldest is : $oldest")
}
聲明了一個(gè)簡單的數(shù)據(jù)類威沫,包括其中兩個(gè)屬性:name和age.
age屬性默認(rèn)為null(如果沒有指定)。在創(chuàng)建“人”列表時(shí)洼专,忽略了kingsley的年齡棒掠,所以默認(rèn)其值為Null。然后你調(diào)用了maxBy函數(shù)來查找列表中年紀(jì)最大的那個(gè)“人“屁商。傳遞給這個(gè)函數(shù)的lamba表達(dá)式需要一個(gè)參數(shù)烟很,使用it作為這個(gè)參數(shù)的默認(rèn)名稱。如果age屬性為null蜡镶,Elvis運(yùn)算符(雾袱?:)會(huì)返回零。
1.2 Kotlin的主要特征
1.2.1 目標(biāo)平臺(tái):服務(wù)器端帽哑、Android及任何Java運(yùn)行的地方
Kotlin 最常見的應(yīng)用場景:
- 編寫服務(wù)器端代碼(典型的代表是Web的應(yīng)用后端)
- 創(chuàng)建Android設(shè)備上運(yùn)行的移動(dòng)應(yīng)用
1.2.2 靜態(tài)類型
與Java不同的是谜酒,Kotlin不需要在源代碼中顯式地聲明每個(gè)變量的類型。
最簡單的例子:
val x = 1
在聲明這個(gè)變量時(shí)妻枕,由于變量初始化為整形值僻族,Kotlin自動(dòng)判斷出它的類型是Int.編譯器這種從上下文推斷變量的能力被稱作類型推導(dǎo)。
靜態(tài)類型帶來的好處:
- 性能 —— 方法調(diào)用速度更快屡谐,因?yàn)椴恍枰龠\(yùn)行時(shí)才來判斷調(diào)用的是哪個(gè)方法述么。
- 可靠性——編譯器驗(yàn)證了程序的正確性,因而運(yùn)行時(shí)崩潰的概率更低愕掏。
- 可維護(hù)性——陌生代碼更容易維護(hù)度秘,因?yàn)槟憧梢钥吹酱a中用到的對象的類型。
- 工具支持——靜態(tài)類型使IDE能提供可靠的重構(gòu)饵撑、精確的代碼補(bǔ)全以及其他特性剑梳。