其餘:可讓Kotlin代碼運行在iOS設備上及編譯成JavaScript,容許你在瀏覽器中運行Kotlin代碼等
後端
Kotlin和Java同樣是一種靜態類型的編程語言。這意味着全部表達式的類型在編譯期就已經肯定了。與Java不一樣的是Kotlin不須要你在源代碼中顯示的聲明每一個變量的類型。不少狀況下,變量類型能夠根據上下文來自動判斷,編譯器這種根據上下文推斷變量類型的能力被稱做類型推導。瀏覽器
val i = 1 // 這裏能夠不用像下面那樣顯示的聲明i爲Int類型,編譯器根據類型推導能夠自動推導出i爲Int類型 //val i:Int = 1 //這裏和上面代碼是等效的
靜態類型帶來的好處:安全
函數式編程的核心概念以下:服務器
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沒有強制使用某種特定的編程風格和範式。當你開始學習這門語言的時候,可使用熟悉的來自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的特性也能跨語言工做,容許:
---恢復內容結束---