定義包
package my.demo
import java.util.*
// ……
定義函數(shù)
fun sum(a: Int, b: Int): Int {
return a + b
}
將表達(dá)式作為函數(shù)體滞欠、返回值類型?動(dòng)推斷的函數(shù):
fun sum(a: Int, b: Int) = a + b
函數(shù)返回?意義的值:
fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}
Unit 返回類型可以省略
fun printSum(a: Int, b: Int) {
println("sum of $a and $b is ${a + b}")
}
定義局部變量
?次賦值(只讀)的局部變量:
val a: Int = 1 // ?即賦值
val b = 2 // ?動(dòng)推斷出 `Int` 類型
val c: Int // 如果沒有初始值類型不能省略
c = 3 // 明確賦值
可變變量:
var x = 5 // ?動(dòng)推斷出 `Int` 類型
x += 1
注釋
正如 Java 和 JavaScript古胆, Kotlin ?持?注釋及塊注釋。
// 這是?個(gè)?注釋
/* 這是?個(gè)多?的 塊注釋。 */
與 Java 不同的是逸绎, Kotlin 的塊注釋可以嵌套惹恃。
使?字符串模板
var a = 1 // 模板中的簡單名稱:
val s1 = "a is $a"
a = 2 // 模板中的任意表達(dá)式:
val s2 = "${s1.replace("is", "was")}, but now is $a"
使?條件表達(dá)式
fun maxOf(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
} }
使? if 作為表達(dá)式:
fun maxOf(a: Int, b: Int) = if (a > b) a else b
使?可空值及 null 檢測
當(dāng)某個(gè)變量的值可以為 null 的時(shí)候,必須在聲明處的類型后添加 ? 來標(biāo)識(shí)該引?可為空棺牧。 如果 str 的內(nèi)容不是數(shù)字返回 null:
fun parseInt(str: String): Int? {
// ……
}
使?返回可空值的函數(shù):
fun printProduct(arg1: String, arg2: String) {
val x = parseInt(arg1)
val y = parseInt(arg2) // 直接使? `x * y` 可能會(huì)報(bào)錯(cuò)巫糙,因?yàn)樗麄兛赡転?null
if (x != null && y != null) { // 在空檢測后, x 和 y 會(huì)?動(dòng)轉(zhuǎn)換為?空值(non-nullable)
println(x * y)
}
else {
println("either '$arg1' or '$arg2' is not a number")
}
}