最近kotlin越來越受歡迎了,好多網站預言--kotlin將在之后的幾年里徹底替換java,成為一種新的服務端編程語言。kotlin基於java。所以很多語法與java類似,從java切換到kotlin基本不需要成本。
最近在用kotlin在寫一個項目,剛開始寫代碼感覺比較別扭,一旦用熟練后,再切換回java,就會感覺到java的語法有點累贅了。下面將使用kotlin中的心得分享給大家。
語法見:https://www.kotlincn.net/docs/reference/basic-types.html
太基礎的語法參見上述鏈接,在博客中只寫了作者在使用過程中感覺和java有較大差別的地方。
1,數據類型
kotlin中的數據類型和java相同
Type | Bit width |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
每個數字是有符號的。而且在kotlin中提供了很多數據類型相互轉換的方法,例如
val valInt = 23 // 默認為Int類型 val valLong = valInt.toLong() // 將23 轉換為Long類型 val valShort = valShort.toShort() // 將23 轉換為Short類型 val valByte = valByte.toByte() // 將23 轉為Byte類型
上面是數據轉型的例子,但是在Int轉為Byte時,如果大於127,在Int轉為Byte時,在轉回Byte時會變成負數,這時候要加上256。java 中也存在這樣的問題。
下面介紹一下kotlin中對象的定義
val a = 10 // 定義不可變的int類型值a var b = 20 // 定義可變的int類型值b val c = IntArray(5) // 定義引用不可變的Int類型數組 c var d = LongArray(8) // 定義引用可變的Long類型數組 d
首先可以看出在定義變量是不用再變量名稱前寫明變量的類型,其次在定義變量時不用使用new關鍵字。
kotlin中默認的數值類型為int。
上面代碼中最大的區別在於定義中的val,var。val代表值(對象則指引用)不可變,var代表值(對象則指引用)不可變。這些規則是在編譯器檢驗的,如果在聲明對象時,聲明為val在后面的代碼中,如果對該對象的值或引用做出修改,那么就會報錯。這時需要將對象聲明為var類型的。
for循環
在kotlin中如果寫for循環,你會感覺是一件很開心的事,kotlin提供了很多類型的函數
for(i in 1 until n){ // 不包含n } for(i in 1 ... n){ // 包含n } for(i in n downto 0){ // 向下遍歷到0 } for(i in 0 until 0 step 2){ // 循環步長為2 } (0 until n).forEach{ i->doSomeThing()} // 最好用的for循環
2,類的定義
kotlin也是面向對象的語言,所以在語法中也有類的定義,在講之前先解釋一下權限修飾符。kotlin也包含和java中的public,private和protected這三個修飾符,但是在kotlin中類前 不寫修飾符表示為public。除此之外kotlin中還存在另外一個修飾符:internal,這個修飾符表示只有模塊內部才能訪問。當你使用kotlin開發了一個模塊,有些類定義為API,但是其中有些成員或函數,在自己的模塊中的其他類可能會調用,但是又不希望使用你API的人調用,就可以使用internal修飾。
類的繼承
類的定義在這里不再詳細介紹,在這里只介紹一下類的繼承時的父類中構造函數有參數的情況:
class open Demo constructor(name: String){ private val name: String init{ this.name = name // 單個構造函數時,構造函數體 } } class SubDemo constructor(name: String) : Demo(name){ }
- 首先如果一個類不是抽象的,而且要被其他類要繼承,那么這個類就要在定義時用open關鍵字聲明,該類中需要被繼承的方法也要有open關鍵字修飾。
- 子類繼承的父類寫在子類名稱之后,用“:”隔開,最重要的一點就是,父類不能只寫一個名稱,而且要給其構造函數傳參數。
以上就是我最近的學習心得,很多細節沒有描述,我會后續補充,以上內容供大家參考並批評指正。
在實際的項目編寫過程中,kotlin代碼與java代碼可以共存,且可以相互調用,這就使得java工程師切換到kotlin可以更好的理解kotlin語法。其次kotlin工程師與java工程師可以共同開發一個項目,只要商定API,那么就不會相互影響。