初探 Kotlin

想寫這個教程有三個原因,一是 Kotlin 作爲一種新興的編程語言,優點實在是太多,值得花時間學習掌握;二是 Kotlin 作爲新興的語言,各種教程和資料相當不完善,我作爲 Kotlin 的喜愛者,也想爲 Kotlin 的發展貢獻自己的力量;三是因爲我在學習 Kotlin 時,被各種特性搞得焦頭爛額,所以想寫個更加有條理、更清晰易懂的 Kotlin 教程。

好了,閒話少敘,讓我們開始 Kotlin 學習之路吧!

1. Kotlin 是什麼?

知乎有個格言“先是是不是,再問爲什麼”,想了解一件事件,首先得了解它是什麼、從哪裏來的,再才能談其他的。想學 Kotlin,我們先看看它到底是什麼:

Kotlin 是由 JetBrains 開發團隊設計的基於 JVM 的靜態型別編程語言,也可以被編譯爲 JavaScript 源代碼。

這裏有幾個重點:

  1. 由 JetBrains 團隊開發:這個 JetBrains 就是那個開發 Intellij IDEA 的公司,因此安裝 Intellij IDEA 時會自動安裝 Kotlin 開發插件,可以直接用來開發 Kotlin 項目。除此之外,Kotlin 在 Eclipse 上也有對應的開發插件,安裝方法見這裏

  2. 基於 JVM:JVM 就是 Java Virtual Machine,Java 虛擬機。原來 Java 虛擬機不只是 Java 語言的虛擬機,只要文件格式滿足 JVM 對編譯文件的要求,就能在它上面運行,所以說只要能編譯成符合要求的 Java 字節碼,任何語言都能在 Java 虛擬機上運行。這同時也說明,Kotlin 是一種編譯型語言,它需要先編譯成字節碼,再在 JVM 上運行。

  3. 靜態型別:什麼是靜態型別?維基百科的解釋是:“如果一個編程語言的類型檢查,可在不測試運行時期表達式的等價性的情況下進行,該語言即爲靜態類型的。”一般來說有編譯這個執行過程的語言,基本都是靜態類型;而不需要編譯的解釋型語言,一般都是動態類型。從類型的強弱來看,Kotlin 是一種強類型的語言,擁有與 Java 類似的類型系統。

  4. JavaScript 支持:從 Kotlin 1.1 開始,Kotlin 完全支持 JavaScript 平臺的所有語言功能,但因爲 JVM 不支持弱類型語言,所以用於 JVM 的 Kotlin 代碼不能直接用在 JavaScript 平臺上。而且因爲我不懂 JavaScript,所以有關 JavaScript 的內容本專欄將不予介紹 (    )

2. Kotlin 和 Java 是什麼關係?

如果說 Java 是 C++--,那麼 Kotlin 可以說是 Java++-~~

  • 相比較 Java,Kotlin 增加了許多特性,比如 Java 8 之前沒有的 Lambda 表達式、When 表達式、擴展函數、高階函數…… 還有一堆一堆的關鍵字……

  • 相比較 Java,Kotlin 去除了一些特性,比如 final 關鍵字、靜態變量、靜態方法、空指針異常等;

  • 相比較 Java,Kotlin 封裝了許多過程和表示方法,那些在 Java 中需要一大堆代碼的東西,在 Kotlin 中只需要幾行。

Kotlin 沒有完全取代 Java 語言的野心,它用一種巧妙的方式讓自己騎上了 Java 這隻巨獸,利用 JVM 平臺上豐富的類庫迅速發展。

一方面,它是一種新興的現代編程語言;另一方面,它又與 Java 有完善的互操作性,完善到可以直接在 Kotlin 代碼中隨便插入 Java 語句(反正最後都要編譯成字節碼~),同樣可以在 Java 代碼中調用 Kotlin 語言寫成的函數和類庫。

憑藉與 Java 語言完全兼容的特性,學習 Kotlin 的成本相當低,你完全可以先用 Kotlin 語言寫項目中的非核心代碼,熟練掌握後再用 Kotlin 語言重寫其他 Java 語言的部分,最終把整個項目遷移到 Kotlin 平臺上來。

3. Kotlin 有哪些與衆不同的特點?

主要特點前面介紹得差不多了,這裏總結一下 Kotlin 語言裏其他的特點:

  1. 從 Kotlin 開始學習函數式編程:早在 Java 8 的 Stream API 之前,Kotlin 就已經走上函數式編程的路了,通過函數式編程,你的代碼將變得簡潔而有效。在學習和使用 Kotlin 語言的旅程中,相信你會在一次又一次的驚豔裏領略函數式編程的魅力;

  2. 只寫簡潔的代碼:Java 的語法糖太少了!Kotlin 封裝了 Java 裏那些冗長而易錯的代碼,用一個又一個語法糖壓縮你的代碼。不過語法糖太多,一時可能難以消化,如果遇到吃不下去的語法糖,不妨試試用回 Java 代碼哦。

  3. 清楚地聲明每一個要素:在 Kotlin 裏,只有聲明爲 open 的類才能被繼承,只有聲明爲 open 的方法才能被重寫,子類重寫父類方法時,必須加上 override 關鍵字;聲明變量時,只有用 var 聲明的變量纔是“可變的量”,聲明爲 val 的變量則相當於 Java 中用 final 修飾的常量。這裏就體現出 Kotlin 的哲學了:對於可能產生混淆的地方,都要明確地指定可能混淆的要素,儘量避免不必要的混亂。

作者:CNife
鏈接:https://zhuanlan.zhihu.com/p/26443556

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章