1. 函數
1.1 函數的聲明
函數定義使用關鍵字 fun,參數格式爲:參數 : 類型
fun sum(a: Int, b: Int): Int {
return a + b
}
1.2 省略返回值類型
將表達式作爲函數體、返回值類型自動推斷的函數:
fun sum1(a: Int, b: Int) = a + b
1.3 無返回值的函數
在 Kotlin 中,函數無返回值,用關鍵字:Unit ,類似 Java 中 void:
fun sum2(a: Int, b: Int): Unit {
Log.e("zzw", "無返回值的函數")
}
Unit 返回類型可以省略:
fun sum3(a: Int, b: Int) {
Log.e("zzw", "無返回值的函數,返回值類型可以省略")
}
2. 變量
2.1 變量的聲明
定義只讀局部變量使用關鍵字 val 定義,可重新賦值的變量使用 var 關鍵字:
val mA = 1
val mB = 2
var mC = 3
當嘗試給 val 再次賦值,會有錯誤提醒:
3. 註釋
Kotlin 支持單行(或行末)與多行(塊)註釋:
// 這是一個行註釋
/* 這是一個多行的
塊註釋。 */
Kotlin 中的塊註釋可以嵌套:
/* 註釋從這裏開始
/* 包含嵌套的註釋 */
並且在這裏結束。 */
4. 條件表達式
Kotlin 中條件表達式跟 Java一樣:
fun maxNum(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
5. 空值與 null 檢測
當某個變量的值可以爲 null 的時候,必須在聲明處的類型後添加 ? 來標識該引用可爲空:
var a:String ?="zzw"
var b:String ="zzw"
如果是普通的聲明變量:
var b:String ="zzw"
當對其賦值爲 null 的時候,會報錯:
對於 a,因爲 a 可能爲空,所以無法進行如下的調用:
對於 b,不存在空的情況,不存在發生空指針的情況,所以可以進行如下的調用:
b.length
如果 a 仍然要調用 a.lenght,則用如下的方式:
var l = a?.length ?: -1
如果 a 爲 null,返回-1,否則返回 a.length。
6. 類型檢測與自動類型轉換
is 運算符檢測一個表達式是否某類型的一個實例。
fun getStringLength(obj: Any): Int? {
if (obj is String) {
return obj.length
} else {
return null
}
}
7. 循環
7.1 for 循環
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
Log.e("zzw", item);
}
運行結果:
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: apple
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: banana
2019-09-23 22:23:19.932 5791-5791/cn.zzw.messenger.hellokotlin E/zzw: kiwifruit
或者:
val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
Log.e("zzw","item at $index is ${items[index]}")
}
運行結果:
2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 0 is apple
2019-09-23 22:29:03.650 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 1 is banana
2019-09-23 22:29:03.651 6060-6060/cn.zzw.messenger.hellokotlin E/zzw: item at 2 is kiwifruit
7.2 while 循環
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
Log.e("zzw", "item at $index is ${items[index]}")
index++
}
8. when 表達式
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
9. 使用區間
使用 in 運算符來檢測某個數字是否在指定區間內:
var x = 5;
if (x in 1..10) {
Log.e("zzw", "fits in range")
}
判斷是否在範圍外:
if (x !in 6..10) {
Log.e("zzw", "x is out of rang")
}
參考: