1. 程式人生 > >Kotlin基本語法和使用

Kotlin基本語法和使用

activit ext eset ans 默認 構造器 span 變量 tag

  • Kotlin 是一個基於 JVM 的新的編程語言,由 JetBrains 開發。與Java相比,Kotlin的語法更簡潔、更具表達性,而且提供了更多的特性。
  • Kotlin是使用Java開發者的思維被創建的,Intellij作為它主要的開發IDE。對於 Android開發者,有兩個有趣的特點:
  • 對Java開發者來說,Kotlin是非常直覺化的,並且非常容易學習。語言的大部 分內容都是與我們知道的非常相似,所以能迅速地掌 握它。
  • AndroidStudio作為目前最流行的Android開發工具,能夠非常完美地理解、編譯運行Kotlin代碼。AndroidStudio 3.0之後已經完美支持kotlin

1.下面是AndroidStudio的配置

   1.1 在Project對應的build.gradle文件中添加如下代碼:

   ext.kotlin_version = ‘1.1.2-4‘ //kotlin版本號

     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

1.2 在module對應的build.gradle文件 中添加代碼::

   添加插件 apply plugin: ‘kotlin-android‘

   添加依賴庫 compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

   重新build project就可以使用kotlin了。

  2.下面說下kotlin的基本語法(借鑒了Kotlin的官網文檔)

  基本類型Basic Types

   2.1 Number類型

    技術分享

定義變量

    val a: Int = 10000

    val boxedA: Int? = a

    val b: Byte = 1

    每個Number類型的變量支持如下方法進行轉換

    技術分享

    如:val i: Int = b.toInt()

   2.2 Operations

    如 val x = (1 shl 2) and 0x000FF000

    技術分享

  2.3 Characters

     字符型 定義如:val c: Char = ‘C‘

   2.4 Booleans

    布爾類型 定義如:val b: Boolean = false;

   2.5 Arrays

    數組類型 定義如:val x: IntArray = intArrayOf(1, 2, 3)

  2.6 Strings

    字符串類型 定義如:val s = "Hello, world"

  

  3.基本語法

  3.1 if語句

  技術分享

3.2 when語句(替代了java裏的switch)

  技術分享

3.3 for循環語句

  技術分享

  循環遍歷集合collection裏面的數據 並輸出

3.4 while 和 do...while語句和java類似

  技術分享

 4. 方法的定義

  格式如:fun 方法名(參數名 :參數類型):返回值類型{

      }

  比如:

  技術分享

  我們還可以給參數設置默認值 如:

  fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size()) { ... }

  5. 類的定義

  格式如:class 類名{

      }

  在Kotlin中,一個類有一個primary constructor,一個或多個secondary constructors。primary constructor 屬於類頭部分,它在類名之後。

  技術分享

  如果primary constructor沒有任何註解或者指示符,constructor關鍵字可以被省略。

  技術分享

相反,如果primary constructory有註解或者可見的指示符,constructor是必須的。

  技術分享

  primary constructor不能包含任何的代碼,初始代碼可以放在初始塊中,初始化代碼塊以init關鍵字開頭。

  技術分享

  需要註意的是,在主構造函數裏,可以直接用這些參數變量賦值給類的屬性,或者用構造代碼塊來實現初始化。

  技術分享

  Secondary Constructors

  除了primary constructory,還有secondary constructors,同樣也是constructor開頭,位於類體中。
  值得說明的是,如果primary constructory和secondary constructors同時存在,每個secondary constructor需要委托到primary constructor中去,或者間接通過另一個secondary constructors來委托。使用方法就是使用 this,表示委托到本類的另一個構造函數中。

  技術分享

  如果非抽象的類沒有聲明任何的構造函數,它默認繼承一個沒有任何參數的公有構造器,這個跟Java中的默認構造器類似。如果希望它繼承的是一個私有的構造器,就需要顯示的指明。

  技術分享

  創建類的對象實例我們可以這麽實現

  val invoice = Invoice()

  val customer = Customer("帥氣的碼農")

  6. 類的繼承

   用“:”冒號實現類的繼承

   定義一個父類 Person

   open class Person(age: Int) //open關鍵字跟Java中的final是相反

   子類繼承

   class Child(age: Int) : Person(age)

   如果父類沒有primary constructor,子類的每個secondary constructor在右邊使用super來對它進行初始化。

   class Child : Person {

    constructor(ctx: Context) : super(ctx) { }

    constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) { }

    }

  7. 方法重寫

   重寫成員函數

   對於可以重寫的函數,都需要顯示的指明,使用的是open關鍵字。如果沒有,在子類中聲明跟父類相同的方法是非法的。

   open class Person {

     open fun v() {}

     fun nv() {}

   }

   class Child() : Base() {

      override fun v() {}

    }

  在子類中被標記為override的成員函數本身也是可以被重新的,也就是open的,如果希望它禁止被重寫,需要使用final關鍵字。

重寫規則

如果一個類繼承自多個類,並且它的這些父類都有同一個可以重寫的函數,那麽這個類必須重寫這個函數並且提供它自己的實現,另外在子類中指示父類的方法是super<A>,A為父類類名,這樣就可以指示不同的父類 了。

 8. 抽象類

  抽象類

  跟Java一樣,使用abstract關鍵字。

 9. Companion Objects

  Kotlin 移除了 static 的概念。通常用 companion object 來實現類似功能。

  我們在 Activity 定義一個靜態類型的 string,名叫TAG,和一個啟動 Activity 的靜態方法:

  技術分享

  我們用kotlin可以這麽寫:

  技術分享

  好了 今天先介紹這麽多 kotlin還有很多關鍵字和語法操作符沒有介紹到,後續更新!!!

Kotlin基本語法和使用