- Kotlin每條語句不加
;
- Kotlin中打印直接調(diào)用
print()
與println()
, 打印的類型
println()無參代表只打印回車換行. - 函數(shù)調(diào)用: 函數(shù)前統(tǒng)一聲明
fun
, 參數(shù)與返回值類型寫在其后, 且需要添加:
, 由于編碼規(guī)范,需要在類型前添加一個空格. 所以Kotlin函數(shù)的寫法如下:
fun sum(a: Int, b: Int): Int {
return a + b
}
- Kotlin中的推導:
- 函數(shù)返回類型推導:
fun sum2(a: Int, b: Int) = a + b
2.變量/常量聲明時賦值可以直接推導(但是先聲明后賦值, 就必須指明類型, 指明類型方式與參數(shù)指明類型方式相同)
val a: Int = 10
var d = 10
val c: Int
c = 10
- Kotlin中使用
$
在字符串中表達式取值, 當然變量取值也是可以的,不需要添加{}
print(" 4和5的和為:${sum2(4,5)}")
println(" $a 與 $b 的和為 ${sum2(a,b)}")
- 沒有意義的返回類型
Unit
, 相當于Java中的void
,但是可以省略
fun printMessage(a: Int, b: Int) {
println(" $a 與 $b 的和為 ${sum2(a,b)}")
}
- Kotlin中的常量與變量 常量使用
val
, 變量使用var
- 字符串模板
var e = 11
val s = "e is $e!"
e = 12
print("${s.replace("is","was")}now e is $e")
- 條件表達式作為返回值
fun maxof2 (a: Int, b: Int) = if (a > b) a else b
- 函數(shù)返回值可能為空時需要使用
?
明確指明
fun parseInt(s: String): Int?{
return s.toIntOrNull()
}
- 使用is/!is判斷是否為某個類型的實例, Any類似Object. 判斷為true后就是判斷的類型了,而不用轉(zhuǎn)換為對應的類型.
fun getStringLength(obj: Any): Int? {
if (obj is String) {
//obj現(xiàn)在就是一個String了
return obj.length
} else {
return null
}
}
這里可以使用if表達式直接返回讓代碼看起來更簡潔
-
in
關鍵字在for循環(huán)中的兩種使用
val foodList = listOf<String>("apple","banana","orange")
for (food in foodList) {
println("$food ")
}
這種循環(huán)類似于foreach
循環(huán)
for (index in foodList.indices) {
println("$index =>${foodList.get(index)}")
//可以使用get,也能使用類似數(shù)組的訪問方法
println("$index =>${foodList[index]}")
}
這種循環(huán)使用場景和常用的for循環(huán)相同, 可以很方便的獲得其中的下標.
- when表達式可以作為返回值, when else 相當于Java中的switch case default的增強
fun describe(obj: Any): String {
//when也可以像if一樣當做一個表達式
return when (obj) {
"a" -> "字符串"
1 -> "一個int"
else -> "Ok"
}
}
- in關鍵字的使用
if (1 in 0..10) print(true) else print(false)
if (1 !in 0..10) print(true) else print(false)
in 在循環(huán)中的使用
..
表示到左邊到右邊的范圍, 與之相對的是downTo
關鍵字, 一個是順序, 一個是倒序
配合步進使用
for (x in 0..10 step 2) {
print(" $x ")
}
for (y in 10 downTo 0 step 3) {
print(" $y ")
}
- 集合
val foodSet = setOf("Banana","Apple","Orange")
val foodList = listOf<String>("apple","banana","orange")
- 集合與lambda聯(lián)動
foodList.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { print(it) }
參考:
Kotlin基礎語法