Kotlin - 資料型別



Kotlin 資料型別是對資料的分類,它告訴編譯器程式設計師打算如何使用這些資料。例如,Kotlin 資料可以是數字、字串、布林值等。

Kotlin 將所有內容都視為物件,這意味著可以在任何變數上呼叫成員函式和屬性。

Kotlin 是一種靜態型別語言,這意味著每個表示式的型別都應該在編譯時已知。

Kotlin 內建資料型別可以分類如下

  • 數字

  • 字元

  • 字串

  • 布林值

  • 陣列

(a) Kotlin 數字資料型別

Kotlin 數字資料型別用於定義儲存數值的變數,它們分為兩組:(a) **整數型別**儲存正負整數 (b) **浮點數型別**表示包含一個小數部分的數字,包含一個小數或多個小數。

下表列出了所有 Kotlin 數字資料型別、定義其變數型別的關鍵字、變數佔用的記憶體大小以及可以儲存在這些變數中的值範圍。

資料型別 大小(位) 資料範圍
Byte 8 位 -128 到 127
Short 16 位 -32768 到 32767
Int 32 位 -2,147,483,648 到 2,147,483,647
Long 64 位 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807
Float 32 位 1.40129846432481707e-45 到 3.40282346638528860e+38
Double 64 位 4.94065645841246544e-324 到 1.79769313486231570e+308

如果我們嘗試將超過特定資料型別變數允許的值儲存在變數中,Kotlin 編譯器將報錯,因為在執行時會發生溢位。

示例

以下示例顯示瞭如何定義和訪問不同的 Kotlin 數字資料型別

fun main(args: Array<String>) {
   val a: Int = 10000
   val d: Double = 100.00
   val f: Float = 100.00f
   val l: Long = 1000000004
   val s: Short = 10
   val b: Byte = 1

   println("Int Value is " + a)
   println("Double  Value is " + d)
   println("Float Value is " + f)
   println("Long Value is " + l )
   println("Short Value is " + s)
   println("Byte Value is " + b)
}

執行上述 Kotlin 程式時,它將生成以下輸出

Int Value is 10000
Double  Value is 100.0
Float Value is 100.0
Long Value is 1000000004
Short Value is 10
Byte Value is 1

(b) Kotlin 字元資料型別

Kotlin 字元資料型別用於儲存單個字元,它們由型別 **Char** 關鍵字表示。Char 值必須用單引號括起來,例如 'A' 或 '1'。

示例

以下示例顯示瞭如何定義和訪問 Kotlin Char 資料型別

fun main(args: Array<String>) {
   val letter: Char    // defining a Char variable
   letter = 'A'        // Assigning a value to it
   println("$letter")
}

執行上述 Kotlin 程式時,它將生成以下輸出

A

Kotlin 支援許多字元的轉義序列。當字元字首為反斜槓 (\) 時,稱為轉義序列,對編譯器具有特殊含義。例如,以下語句中的 \n 是一個有效字元,稱為換行符

println('\n') //prints a newline character

println('\$') //prints a dollar $ character

println('\\') //prints a back slash \ character

Kotlin 支援以下轉義序列:\t、\b、\n、\r、\'、\"、\\ 和 \$。

(c) Kotlin 字串資料型別

String 資料型別用於儲存一系列字元。字串值必須用雙引號 (" ") 或三引號 (""" """) 括起來。

Kotlin 中有兩種字串——一種稱為 **跳脫字元串**,另一種稱為 **原始字串**。

  • **跳脫字元串**在雙引號 (" ") 中宣告,可能包含跳脫字元,如 '\n'、'\t'、'\b' 等。

  • **原始字串**在三引號 (""" """) 中宣告,可能包含多行文字,無需任何跳脫字元。

fun main(args: Array<String>) {
   val escapedString : String  = "I am escaped String!\n"
   var rawString :String  = """This is going to be a
   multi-line string and will
   not have any escape sequence""";

   print(escapedString)
   println(rawString)
}

執行上述 Kotlin 程式時,它將生成以下輸出

I am escaped String!
This is going to be a
   multi-line string and will
   not have any escape sequence

(d) Kotlin 布林資料型別

布林值與其他程式語言一樣非常簡單。布林資料型別只有兩個值——**true** 或 **false**。

fun main(args: Array<String>) {
   val A: Boolean = true   // defining a variable with true value
   val B: Boolean = false   // defining a variable with false value

   println("Value of variable A "+ A )
   println("Value of variable B "+ B )
}

執行上述 Kotlin 程式時,它將生成以下輸出

Value of variable A true
Value of variable B false

布林值有一個可空對應型別 **Boolean?**,它可以儲存 **null** 值,如下所示

val boolNull: Boolean? = null

(e) Kotlin 陣列資料型別

Kotlin 陣列是同類資料的集合。陣列用於在一個變數中儲存多個值,而不是為每個值宣告單獨的變數。

我們將在單獨的章節中學習陣列,現在讓我們來看一個定義整數陣列並訪問其其中一個元素的示例。

fun main(args: Array<String>) {
   val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
   println("Value at 3rd position : " + numbers[2])
}

執行上述 Kotlin 程式時,它將生成以下輸出

Value at 3rd position : 3

Kotlin 資料型別轉換

型別轉換是一個過程,其中一種資料型別的值轉換為另一種型別。Kotlin 不支援一種數字資料型別直接轉換為另一種型別,例如,無法將 Int 型別轉換為 Long 型別

fun main(args: Array<String>) {
   val x: Int = 100
   val y: Long = x  // Not valid assignment

   println(y)
}

執行上述 Kotlin 程式時,它將生成以下輸出

main.kt:3:18: error: type mismatch: inferred type is Int but Long was expected
   val y: Long = x  // Not valid assignment

為了將一種數字資料型別轉換為另一種型別,Kotlin 提供了一組函式

  • toByte()

  • toShort()

  • toInt()

  • toLong()

  • toFloat()

  • toDouble()

  • toChar()

現在讓我們再次重寫上面的例子並嘗試執行它

fun main(args: Array<String>) {
   val x: Int = 100
   val y: Long = x.toLong()

   println(y)
}

執行上述 Kotlin 程式時,它將生成以下輸出

100

測驗時間 (面試和考試準備)

Q 1 - Kotlin 布林變數的值可以為 0 嗎?

A - 對

B - 錯

答案:D

解釋

不,Kotlin 布林變數只能儲存 **true** 或 **false** 值,布林變數不允許使用整數值。

Q 2 - 使用哪種資料型別定義變數 PI 以儲存值 3.14?

A - Float

B - Double

C - Long

D - 以上都不是

答案:B

解釋

我們將使用 **Double** 資料型別定義 PI 以儲存值 3.14。Float 用於儲存像 3.14F 這樣的值

Q 3 - Kotlin 字串的最小長度是多少?

A - 零個字元

B - 1 個字元

C - Null 值

D - 以上都不是

答案:A

解釋

我們可以定義一個包含零個字元的空字串。

Q 4 - 以下哪些是 Kotlin 中用於儲存整數的有效資料型別?

A - Byte、Short、Int、Long

B - Byte、Int、Float、Long

C - Short、Int、Long、Boolean

D - 以上都不是

答案:A

解釋

這是可以用來定義整數的資料型別集 (Byte、Short、Int、Long)。Float 和 Boolean 不用於定義整數。

答案:D

解釋

所有給定的陳述都是關於 Kotlin 資料型別的正確陳述

廣告