1. 函數
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
函數聲明以關鍵字fun開始,函數名稱max
在kotlin中,if是表達式,不是語句,表達式和語句的區別是:表達式有值,語句沒有值
Java中所有控制結構都是語句
Kotlin中除了循環以外大多數控制結構都是表達式
表達式函數體
可以用一個表達式作爲完整的函數體
fun max(a: Int, b: Int): Int = if (a > b) a else b
如果函數體寫在花括號內,這個函數就有代碼塊體
如果返回了一個表達式,它就有表達式體
進一步簡化max函數,省略返回值類型
fun max(a: Int, b: Int) = if (a > b) a else b
Kotlin作爲一門靜態類型語言,編譯器會分析作爲函數體的表達式,並把它的類型作爲函數的返回類型
注意:只有表達式函數的返回類型可以省略。對於有返回值的代碼塊體函數,必須顯示地寫出返回類型和return語句。
2.變量
在Java中聲明變量以類型開始,Kotlin中以關鍵字開始,然後是變量名稱
和表達式函數一樣,如果不指定變量的類型,編譯器會分析初始化器表達式的的值,並把它的類型作爲變量的類型
可變變量和不可變量
var(variable):可變引用 注: 這個單詞就是可變的意思
val(value):不可變引用 對應java中final變量
默認情況下,儘可能使用不可變引用 val,在定義val變量的代碼塊執行期間,val變量只能進行一次初始化
儘管val引用自身是不可變的,但是它指向的對象是可能變的
val languages = arrayListOf("Java")
languages.add("Kotlin")
3.字符串模板
字符串可以包含模板表達式,即一些小段的代碼,會進行求值,並把結果合併到字符串中。模板表達式一美元符($)開頭
val i=100
println("i=$i")
打印結果:i=100
或者使用花括號括起來的任意表達式
val s="adb"
val str="$s.length is ${s.length}"//執行結果爲“adb.length is 3”