kotlin學習二:初步認識kotlin

1. 函數

  kotlin中支持頂級函數(文件內直接定義函數),對比JAVA來講,JAVA的程序入口是main方法,kotlin也同樣,入口爲main函數java

  首先看下kotlin中main函數的定義。函數

fun main(args: Array<String>) {
    println("Hello, world!")
}

語法簡介:spa

  fun是關鍵字,定義函數時使用的,參數args是參數名,冒號後跟參數類型,此處的參數類型爲Array(kotlin內置類型)code

  經過示例能夠看出,kotlin也支持泛型。println()是kotlin內置的控制檯打印函數對象

  這樣就完成了main函數的定義,請自行和JAVA的main方法做對比,一個很明顯的區別就是main能夠直接定義在文件內blog

  成爲頂級函數,不須要依託於類。字符串

  另外從上面的例子中能夠看出,kotlin的語句結尾是不須要分號的get

1.1 kotlin中定義和使用函數

  函數的常規定義方式:編譯器

fun max(a: Int, b:Int): Int {
    return if(a > b) a else b
}

此處定義了一個比較兩個參數大小的函數,返回大的值,函數定義沒什麼可說的,在函數的參數列表後跟了一個冒號 : Int,編譯

這個意思表示該函數返回一個Int類型的值

同JAVA同樣,if語句後就一行代碼時能夠省略大括號,另外在kotlin中沒有三元運算符,因此此處用if else代替

另外值得一提的是,和JAVA的if語句不同,kotlin中的if是表達式。表達式會通過計算後產生一個結果值,而語句塊不會

這是一個很重要的區別,基於這種區別,咱們還能夠採用其餘方式定義函數,下邊你將會看到。

  函數的表達式定義形式:

 

fun max(a: Int, b: Int): Int = if (a > b) a else b

 

這裏的函數和上邊的函數定義實現同樣的功能。可是寫法不一樣,直接把if表達式賦值給了函數的返回值,這裏

正是利用了表達式會計算產生一個結果值的特性,才能夠這樣定義函數

  更進一步,省略函數返回值

fun max(a: Int, b: Int) = if (a > b) a else b

這個定義相比上一個更簡介,它省略了函數的返回值定義,那麼函數返回什麼?會不會有返回值,若是有,又返回什麼類型?

首先函數會有返回值,而函數的返回值則取決於if表達式計算後產生的值,這裏函數參數爲兩個Int類型,if表達式返回其中一個較大的

很顯然返回值仍是Int,這些工做編譯器已經幫你作了。

2. 變量:

  2.1 類型的自動推斷:

  kotlin中定義變量,使用valvar關鍵字,二者的區別稍後會說明,定義變量示例:

val name = "test"
val age = 27

  上邊代碼定義了兩個變量,使用關鍵字val聲明,沒有指定類型,編譯器會根據變量值自動推斷類型,好比這裏的name爲String,age爲Int

  若是你想代碼更清晰,也能夠顯示指定類型:

val name: String = "test"

  顯示指定name爲String類型

  上邊咱們說了定義變量有兩種關鍵字分別爲val和var,他們有什麼區別?

  val定義的變量對應JAVA中final關鍵字定義的變量,第一次賦值後不容許改變該值。也就是說val定義的是不可變對象

  var定義的則是可變對象。容許後續賦值更改變量內容。

  那舉個簡單的例子,在javaBean中若是須要setter賦值的屬性,很顯然不該該使用val,由於後續調用setter賦值會報錯

  而無需賦值,只涉及取值的getter屬性,則能夠定義成val

3. 函數的調用

  知道了變量的聲明和函數的定義,就能夠調用函數了。

  依舊拿咱們剛纔定義的max函數來講,我要調用max獲得兩個數中較大的,只要在main函數中調用max便可

fun main(args: Array<String>) {
    val maxNum = max(1,2)
    println(maxNum)
}

這樣就能夠了。

4. 字符串模板

  在Java中,若是想在打印語句中打印某個變量的值,一般使用字符串拼接的方式,例如:System.out.println("hello " + name + " !");

  kotlin提供了字符串模板,可使用更優雅的形式解決這類問題,一樣的輸出在kotlin中的寫法:println("hello $name !")

  $符號即爲字符串打印模板中的變量引用符號。直接在字符串中採用$+變量名便可引用變量,無需拼接

相關文章
相關標籤/搜索