第一章(Kotlin:定義和目的)

實戰Kotlin勘誤

Kotlin 資源大全編程

Kotlin主要特徵

目標平臺

  • 編寫服務器端代碼(典型的表明是Web應用後端)
  • 建立Android設備上運行的移動應用(Android開發)
  • 其餘:可讓Kotlin代碼運行在iOS設備上及編譯成JavaScript,容許你在瀏覽器中運行Kotlin代碼等
    後端

    靜態類型

    Kotlin和Java同樣是一種靜態類型的編程語言。這意味着全部表達式的類型在編譯期就已經肯定了。與Java不一樣的是Kotlin不須要你在源代碼中顯示的聲明每一個變量的類型。不少狀況下,變量類型能夠根據上下文來自動判斷,編譯器這種根據上下文推斷變量類型的能力被稱做類型推導。瀏覽器

val i = 1  // 這裏能夠不用像下面那樣顯示的聲明i爲Int類型,編譯器根據類型推導能夠自動推導出i爲Int類型
//val i:Int = 1 //這裏和上面代碼是等效的

靜態類型帶來的好處:安全

  • 性能 — 方法調用速度更快,由於不須要在運行時纔來判斷調用的是哪一個方法。
  • 可靠性 — 編譯器驗證了程序的正確性,於是運行時奔潰的機率更低。
  • 可維護性 — 陌生代碼更容易維護,由於你能夠看到代碼中用到的對象的類型。
  • 工具支持 — 靜態類型使IDE能提供可靠的重構、精確的代碼補全及其餘特性。

函數式和麪向對象

函數式編程的核心概念以下:服務器

  • 頭等函數  — 把函數看成值使用,能夠用變量保存它,把它看成參數傳遞,或者看成其餘函數的返回值。
fun main(args: Array<String>) {
    val a = test03(test())
    //將test04()函數做爲run函數的參數傳遞
    run(::test04)
}

fun test(): Int {    
    //定義一個函數,並返回一個Int類型的值  
    val a = 1 
    return a
}

fun test02(): KFunction0<Int> {
    //將test()函數做爲test02()函數的返回值
    return ::test
}

fun test03(i: Int) { 
    println("test03 i=$i")
}

fun test04() {
    println("test04")
}

2. 不可變性: 使用不可變對象(用val修飾,至關於Java中的final),這保證了它們的狀態在其建立後不能再改變。多線程

3. 無反作用: 使用的是純函數。此類函數在輸入相同時會產生一樣的結果,而且不會修改其餘對象的狀態,也不會和外面的世界交互。框架

免費並開源

Kotlin是免費和開源的,全面支持主流的IDE和構建系統。編程語言

Kotlin的設計哲學

務實

Kotlin沒有強制使用某種特定的編程風格和範式。當你開始學習這門語言的時候,可使用熟悉的來自Java經驗的風格。而後,你會漸漸發現更多強大的Kotlin特性,並學習把它們應用到你的代碼中,讓代碼更簡潔、更符合語言習慣。不少狀況下,IDE會發現那些能夠用更簡潔的結構來替換的通用代碼模式,並給你提供修正這些代碼的選擇。函數式編程

簡潔

在Kotlin中,咱們努力地保證你寫的代碼都具備實際的意義,而不是僅僅爲了知足代碼結構的須要。許多標準的Java樣板代碼,例如getter、setter以及將構造方法的參數賦值給字段的邏輯,在Kotlin中都是隱式的,並不會使你的源代碼變得混亂。函數

安全

做爲面向JVM的靜態類型語言,Kotlin還保證了應用程序的類型安全。這比使用Java的成本要更低:不須要指定全部的類型聲明,由於許多狀況下編譯器會自動地推斷出類型。更重要的一點是,Kotlin努力地從你的程序中消除NullPointerException。Kotlin的類型系統跟蹤那些能夠或不能夠爲null的值,而且禁止那些運行時可能致使NullpointerException的操做。這所帶來的額外的成本是極小的:把類型標記爲可空的只要一個字符,就是在類型尾部加一個問號:

val s: String? = null //能夠爲null
val s2: String = "" //不能夠爲null

除此以外,Kotlin還有助於避免的另外一種異常類型就是ClassCastException。在Java中,當你把一個對象轉換成一種類型,而沒有事先檢查它是不是正確的類型時,就會發生這個異常。而在Kotlin中,檢查和轉換被組合成了一次操做:一旦檢查過類型,不須要額外的轉換(Java中還須要強制轉換)就能直接引用屬於這個類型的成員。

if (value is String) //檢查類型
    println(value.toUpperCase()) //調用該類型的方法

互操做性

Kotlin工具也對跨語言項目提供了全面支持。它能夠編譯任意混合的Java和Kotlin源碼,無論它們之間是怎樣互相依賴的。IDE的特性也能跨語言工做,容許:

  • 自由地在Java和Kotlin源文件之間切換
  • 調試混合語言的項目,能夠在不一樣語言編寫的代碼之中單步調試
  • 重構Java方法的時候,Kotlin代碼中的對它們的調用也會獲得正確的更新,反之亦然

總結

  1. Kotlin是靜態類型語言並支持類型推導,容許維護正確性與性能的同時保持源代碼的簡潔。
  2. Kotlin支持面向對象和函數式兩種編程風格,經過頭等函數使更高級別的抽象成爲可能,經過支持不可變值(val修飾)簡化了測試和多線程開發。
  3. 在服務器端應用程序中它工做得很好,全面支持全部現存的Java框架,爲常見的任務提供了新工具,如生成HTML和持久化。
  4. 在Android上它也能夠工做,這得益於緊湊的運行時、對Android API特殊的編譯器支持以及豐富的庫,爲常見Android開發任務提供了Kotlin友好的函數。
  5. 它是免費和開源的,全面支持主流的IDE和構建系統。
  6. Kotlin是務實的、安全的、簡潔的,與Java可互操做,意味着它專一於使用已經證實過的解決方案處理常見任務,防止常見的像NullPointerException這樣的錯誤,支持緊湊和易讀的代碼,以及提供與Java無限制的集成。

    ---恢復內容結束---

相關文章
相關標籤/搜索