- 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 v() {}
}
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還有很多關鍵字和語法操作符沒有介紹到,后續更新!!!