Kotlin 初探

前言

Kotlin 是一種在 Java 虛擬機上執行的靜態型別編程語言,由 JetBrains 開發團隊所開發。該語言有幾個優勢。

1. 簡潔
它大大減少你需要寫的樣板代碼的數量。

2. 安全
避免空指針異常等整個類的錯誤。

3. 通用
構建服務器端程序、Android 應用程序或者在瀏覽器中運行的前端程序。

4. 互操作性
通過 100% Java 互操作性,利用 JVM 既有框架和庫。

配置

在我們的AndroidStudio開發工具中,要想使用Kotlin這個優秀的開發語言,我們需要安裝插件,直接在安裝插件界面搜索Kotlin然後安裝。之後再gradle文件增加如下配置

項目gradle文件

完成上面的配置後,我們就可以愉快的玩耍了。

Kotlin示例

首先我們還和以前一樣,創建一個Android項目,自動創建一個Activity之後我們再創建一個java類

那上面的代碼如果用kotlin實現是什麼樣子呢。儘管現在我們還不能寫出Kotlin代碼,但是在安裝插件後AS中提供了自動轉換Kotlin代碼的功能

轉換後的Kotlin代碼

注意:AS提供的java代碼自動轉換功能,我們不要輕易使用,更不要轉化我們成熟的項目,如果需要就需要我們自己去重構實現。否則會有意向不到的事情等着你,畢竟轉換不是那麼智能。上面的代碼只是讓你先簡單熟悉下Kotlin代碼時什麼樣子的,接下來我們先去學習一下Kotlin的基本語法。相信很容易上手。

Hello World!

我們由一個簡單的」Hello World!」輸出程序開始。與新建java文件類似,如下圖,我們選擇Kotlin File/Class.創建一個Kotlin文件。

上述代碼就是簡單的輸出一個字符串「Hello World」,package 後面跟的是包名,我們看出了和java文件的區別,在包名後面沒有以分號「;」結尾。在Kotlin語法中,語句結尾都不再有分號「;」。

在Kotlin中變量聲明有兩種類型,val修飾變量是隻讀變量即只能賦值一次,再次賦值時就會編譯錯誤,如果我們需要多次修改值就需要使用var。在上面的 var str: String = 「」中,str是變量名,:String 表明該變量是String類型變量,後面就是賦值語句。我們也可以這樣寫var str= 「」省略了生命變量類型,它可以根據賦的值而自動推斷出類型。如果我們使用下面賦值語句str=null,發現null是不能賦值的,這就是Kotlin的特性,如果我們想賦值null,可以修改爲 var str:String?=」「。

fun就是函數生命,而這個main函數就和我們java中的main方法一樣,是程序執行的入口。println就是一個打印輸出。

Kotlin聲明類型

在Kotlin中有如下幾種Number類型,他們都是繼承自Number抽象類。

Float(32位),Double(64),Int(32),Byte(8),Short(16),Long(64,類型用大寫L,如12L),Any(任意類型),數組類型Array 根據傳入的泛型數據自動匹配類型,Kotlin還提供了指定類型的Array,如ByteArray,CharArray,ShortArray,IntArray,LongArray,FloatArray,DoubleArray,BooleanArray。在數組類型中都提供了get(index),set(index,value)及iterator()方法供我們使用。

函數

我們先來實現一個簡單的數值求和的函數,通用實現方法如下

傳入兩個Int型數值,sum是函數名,括號後面的:Int表示該函數返回Int的值,函數體中對兩個數字相加並返回。在Kotlin中表達式也可以作爲函數體,編譯器可以推斷出返回類型,可以簡化爲

爲了更好理解表達式可以作爲函數體,我們可以創建一個函數獲取兩個數的最大值,如下:

需要注意的是若if後有多個表達式,如下

括號中的表達式順序決定了返回的值及其類型。

如果我們的方法體僅僅是打印字符串,並不返回值則

Unit就類似我們java中的void,即沒有返回值,此時我們可以省略

對於函數體,方法或者類等和java一樣也有一些修飾符,如下

  • abstract //抽象類標示
  • final //標示類不可繼承,默認屬性
  • enum //標示類爲枚舉
  • open //類可繼承,類默認是final的
  • annotation //註解類
  • private //僅在同一個文件中可見
  • protected //同一個文件中或子類可見,不可修飾類
  • public //所有調用的地方都可見
  • internal //同一個模塊中可見,若類不加修飾符,則默認爲該修飾符,作用域爲同一個應用的所有模塊,起保護作用,防止模塊外被調用。

操作符

直接上代碼如下

輸出信息爲

在上面的部分操作符可達到邏輯操作符, 當我們使用Boolean時,or() 相當於 ||,and() 相當於 &&, xor() 當操作符兩邊相反時爲true,否則爲false ,not()時取反。

數組遍歷及控制語句

遍歷數組

使用when判斷類型

is 和java中instanceof是一個作用判斷是否爲某個類型。!is即判斷不是某個類型。

倒序輸出是downTo

類與枚舉

數據類用來保存數據,類似於POJO類,使用data關鍵詞進行定義,編譯器默認會爲數據類生成以下四個方法

  • equals()
  • hashCode()
  • toString()
  • copy()
    通過數據類你會看到Kotlin的簡潔性,我們創建一個Staff類,有String類型的name,position和泛型T(使用泛型僅僅是爲了在Kotlin中接觸以下泛型)
    java實現代碼:

    Kotlin數據類:

    通過對比我們就看出了優點了,一行代碼就實現了,具體使用

    要獲取某個屬性如獲取名字staff.name,賦值就是staff.name=」code4Android2」,既然說了這樣可以賦值,但是動手的小夥伴說爲什麼我敲的報錯啊,如下

    編譯報錯了,在前面我們說過val修飾的屬性只能賦值一次,那在這裏val修飾的屬性我們是不能再次賦值的。

    上面使用了字符模板,在Kotlin中有兩種字符模板形式,$<變量>、${<變量>}

    枚舉

    在Kotlin中枚舉還支持方法。

    擴展

    使用

相關文章
相關標籤/搜索