1. 程式人生 > >Kotlin 入門(一)

Kotlin 入門(一)

目錄

  • 基本資料型別

    • 數字
    • 字元
    • 布林
    • 陣列
    • 字串
  • 控制流(if/when/for/while)

    • if
    • when
    • for
    • while
  • 函式與Lambda表示式

  • 類與物件

    • 繼承
    • 屬性與欄位
    • 介面
    • 內聯類
  • 註釋

  • 編碼規範

基本資料型別

數字

Type Bit Width
Double 64
Float 32
Long 32
Int 32
Short 16
Byte 8

字面常量

  • 十進位制:123
    • Long型別用大寫L 標記:123L
  • 十六進位制:0x0F
  • 二進位制:0b0001011
  • 預設Double:123.5、123.5e10
  • Float 用f或者F標記:123.5f

數字字面值中的下劃線(自1.1起)

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L val hexBytes = 0xFF_EC_DE_5E val bytes = 0b11010010_01101001_10010100_10010010 複製程式碼
  1. 對於數字沒有隱式拓展轉換(如Java中的int可以隱式轉換為long)
  2. kotlin 不支援八進位制
  3. Kotlin 中字元不是數字

字元

布林

布林用 Boolean 型別表示,它有兩個值:true 與 false。
若需要可空引用布林會被裝箱。
內建的布林運算有:

  • || – 短路邏輯或
  • && – 短路邏輯與
  • ! - 邏輯非

陣列

控制流

if表示式

在 Kotlin 中,if是一個表示式,即它會返回一個值。 因此就不需要三元運算子(條件 ? 然後 : 否則),因為普通的 if 就能勝任這個角色。

// 傳統用法
var max = a 
if (a < b) max = b

// With else 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}
 
// 作為表示式
val max = if (a > b) a else b
複製程式碼

if的分支可以是程式碼塊,最後的表示式作為該塊的值:

val max = if (a > b) {
    print("Choose a")
    a
} else {
    print("Choose b")
    b
}
複製程式碼

如果你使用 if 作為表示式而不是語句(例如:返回它的值或者把它賦給變數),該表示式需要有 else 分支。

when

when 取代了類 C 語言的 switch 操作符。其最簡單的形式如下

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // 注意這個塊
        print("x is neither 1 nor 2")
    }
}
 如果 when 作為一個表示式使用,則必須有 else 分支, 除非編譯器能夠檢測出所有的可能情況都已經覆蓋了。
複製程式碼

while 迴圈

while (x > 0) {
    x--
}

do {
  val y = retrieveData()
} while (y != null) // y 在此處可見
複製程式碼

函式

函式的宣告

Kotlin 中的函式使用 fun 關鍵字宣告:

fun double(x: Int): Int {
    return 2 * x
}
複製程式碼

定義函式

  1. 帶有兩個 Int 引數、返回 Int 的函式:
fun sum(a: Int, b: Int): Int {
    return a + b
}
複製程式碼
  1. 將表示式作為函式體、返回值型別自動推斷的函式:
fun sum(a: Int, b: Int) = a + b
複製程式碼
  1. 函式返回無意義的值,Unit是一種只有一個值——Unit 的型別。這個值不需要顯式返回:
fun printSum(a: Int, b: Int): Unit {
    println("sum of $a and $b is ${a + b}")
}
複製程式碼

類與物件

類的成員

  • 建構函式與初始化塊
  • 函式
  • 屬性
  • 巢狀類與內部類
  • 物件宣告

建構函式

Kotlin 中使用關鍵字 class 宣告類

class Invoice { ... }
複製程式碼

屬性與欄位

  1. 屬性可以用關鍵字var 宣告為可變的,否則使用只讀關鍵字val,1、只讀屬性的用 val開始代替var 2、只讀屬性不允許 setter。要使用一個屬性,只要用名稱引用它即可
  2. getter和setter
var <propertyName>[: <PropertyType>] [= <property_initializer>]
    [<getter>]
    [<setter>]
複製程式碼

繼承

Kotlin 中所有類都有一個共同的超類 Any,這對於沒有超型別宣告的類是預設超類:

參考連結 一