
- 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 類被定義為資料類的條件如下:
主建構函式需要至少一個引數。
所有主建構函式引數都需要標記為 val 或 var。
資料類不能是抽象的、開放的、密封的或內部的。
該類可以擴充套件其他類或實現介面。如果您使用的是 1.1 之前的 Kotlin 版本,則該類只能實現介面。
語法
定義 Kotlin 資料類很簡單。如果 Kotlin 類用 **data** 關鍵字標記,則它成為資料類。例如
data class Book(val name: String, val publisher: String, var reviewScore: Int)
Kotlin 資料類的好處是,當您宣告一個 Kotlin 資料類時,編譯器會自動生成建構函式、toString()、equals()、hashCode() 以及額外的 copy() 和 componentN() 函式。
示例
Kotlin 資料類的例項化方式與其他 Kotlin 類相同。
data class Book(val name: String, val publisher: String, var reviewScore: Int) fun main(args: Array<String>) { val book = Book("Kotlin", "Tutorials Point", 10) println("Name = ${book.name}") println("Publisher = ${book.publisher}") println("Score = ${book.reviewScore}") }
當您執行上述 Kotlin 程式時,它將生成以下輸出:
Name = Kotlin Publisher = Tutorials Point Score = 10
Copy 函式
當我們定義 Kotlin 資料類時,copy() 函式會自動建立。此 copy 函式可用於複製物件,更改其某些屬性,但保持其餘屬性不變。以下是一個示例:
data class Book(val name: String, val publisher: String, var reviewScore: Int) fun main(args: Array<String>) { val original = Book("Kotlin", "Tutorials Point", 10) val copied = original.copy(reviewScore=5) println("Original Book") println("Name = ${original.name}") println("Publisher = ${original.publisher}") println("Score = ${original.reviewScore}") println("Copied Book") println("Name = ${copied.name}") println("Publisher = ${copied.publisher}") println("Score = ${copied.reviewScore}") }
當您執行上述 Kotlin 程式時,它將生成以下輸出:
Original Book Name = Kotlin Publisher = Tutorials Point Score = 10 Copied Book Name = Kotlin Publisher = Tutorials Point Score = 5
toString 函式
當我們定義 Kotlin 資料類時,toString() 函式也會自動建立。此函式返回物件的字串表示形式。以下是一個示例:
data class Book(val name: String, val publisher: String, var reviewScore: Int) fun main(args: Array<String>) { val book = Book("Kotlin", "Tutorials Point", 10) println(book.toString()) }
當您執行上述 Kotlin 程式時,它將生成以下輸出:
Book(name=Kotlin, publisher=Tutorials Point, reviewScore=10)
hashCode() 和 equals() 函式
hasCode() 函式返回物件的雜湊碼。如果兩個物件相等,則 hashCode() 對這些物件返回相同的整數值。
equals() 函式如果兩個物件相等或具有相同的 hasCode 值,則返回 **true**,否則返回 **false**。
以下是一個示例:
data class Book(val name: String, val publisher: String, var reviewScore: Int) fun main(args: Array<String>) { val original = Book("Kotlin", "Tutorials Point", 10) val copy1 = original.copy(reviewScore=5) val copy2 = original.copy(reviewScore=7) println("Original Hashcode = ${original.hashCode()}") println("Copy1 Hashcode = ${copy1.hashCode()}") println("Copy2 Hashcode = ${copy2.hashCode()}") if( copy1.equals(copy2)){ println("Copy1 is equal to Copy2.") }else{ println("Copy1 is not equal to Copy2.") } }
當您執行上述 Kotlin 程式時,它將生成以下輸出:
Original Hashcode = 1957710662 Copy1 Hashcode = 1957710657 Copy2 Hashcode = 1957710659 Copy1 is not equal to Copy2.
解構宣告
我們可以使用解構宣告將物件解構為多個變數。例如
data class Book(val name: String, val publisher: String, var reviewScore: Int) fun main(args: Array<String>) { val book = Book("Kotlin", "Tutorials Point", 10) val( name, publisher,reviewScore ) = book println("Name = $name") println("Publisher = $publisher") println("Score = $reviewScore") }
當您執行上述 Kotlin 程式時,它將生成以下輸出:
Name = Kotlin Publisher = Tutorials Point Score = 10
測驗時間 (面試 & 考試準備)
Q 1 - Kotlin 中資料類的用途是什麼?
答案:A
解釋
Kotlin 資料類僅用於儲存資料。
答案:D
解釋
當我們定義 Kotlin 資料類時,所有提到的函式都會自動建立。
Q 2 - Kotlin 資料類中 componentN() 函式的作用是什麼?
答案:C
解釋
componentN() 函式用於將物件解構為多個變數。