
- Kotlin 教程
- Kotlin - 首頁
- Kotlin - 概述
- Kotlin - 環境設定
- Kotlin - 架構
- Kotlin - 基本語法
- Kotlin - 註釋
- Kotlin - 關鍵字
- Kotlin - 變數
- Kotlin - 資料型別
- Kotlin - 運算子
- Kotlin - 布林值
- Kotlin - 字串
- Kotlin - 陣列
- Kotlin - 範圍
- Kotlin - 函式
- Kotlin 控制流
- Kotlin - 控制流
- Kotlin - if...Else 表示式
- Kotlin - When 表示式
- Kotlin - For 迴圈
- Kotlin - While 迴圈
- Kotlin - Break 和 Continue
- Kotlin 集合
- Kotlin - 集合
- Kotlin - 列表
- Kotlin - 集合
- Kotlin - 對映
- Kotlin 物件和類
- Kotlin - 類和物件
- Kotlin - 建構函式
- Kotlin - 繼承
- Kotlin - 抽象類
- Kotlin - 介面
- Kotlin - 可見性控制
- Kotlin - 擴充套件
- Kotlin - 資料類
- Kotlin - 密封類
- Kotlin - 泛型
- Kotlin - 委託
- Kotlin - 解構宣告
- Kotlin - 異常處理
- Kotlin 有用資源
- Kotlin - 快速指南
- Kotlin - 有用資源
- Kotlin - 討論
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
測驗時間 (面試和考試準備)
答案:D
解釋
不,Kotlin 布林變數只能儲存 **true** 或 **false** 值,布林變數不允許使用整數值。
答案:B
解釋
我們將使用 **Double** 資料型別定義 PI 以儲存值 3.14。Float 用於儲存像 3.14F 這樣的值
Q 4 - 以下哪些是 Kotlin 中用於儲存整數的有效資料型別?
答案:A
解釋
這是可以用來定義整數的資料型別集 (Byte、Short、Int、Long)。Float 和 Boolean 不用於定義整數。
Q 5 - 關於 Kotlin 資料型別,以下哪個陳述是正確的?
B - 要將一種數字資料型別轉換為另一種型別,必須使用提供的輔助函式。
答案:D
解釋
所有給定的陳述都是關於 Kotlin 資料型別的正確陳述