Stories

Detail Return Return

2.Android Compose 基礎系列:在 Kotlin 中創建和使用變量 - Stories Detail

在應用開發中,有些內容是固定的,例如“設置”中的菜單項;而有些內容會不斷變化,比如新聞應用中的標題、來源或發佈時間。為了讓這些變化自動更新,而不是每次都修改代碼,我們需要使用 變量(variable)

🎯 學習目標

  • 瞭解什麼是變量,並學會定義和更新變量
  • 掌握如何為變量選擇合適的數據類型
  • 學會在代碼中添加註釋,提升可讀性

什麼是變量

在編程中,變量就像一個帶標籤的盒子,用來存放某個數據值。

  • 標籤(變量名):告訴我們盒子裏裝的是什麼
  • 盒子裏的值:就是存放的數據

舉個例子:

  • 盒子外寫着 name(表示名字)
  • 盒子裏放着 "Alex"(表示名字的值)

當你想修改名字時,只需替換盒子裏的值,而不必修改整個程序。

為什麼需要變量

如果在代碼中直接寫死所有值,程序只能應對特定情況。
使用變量就像寫信時使用模板,只需替換不同內容即可應對多種情況:

尊敬的 { name }:
您好!很高興今天能在 { location } 與您會晤。希望 { date } 還能見到您。
祝您天天好心情!

同樣地,在應用中,你可以用變量來代替變化的數據:

  • 👤 用户名:name
  • 📍 地點:location
  • ⏰ 時間:date

這樣,應用就能根據不同用户或場景自動生成對應內容,而不需要每次都重新編寫邏輯。

📊Kotlin 常見數據類型

在定義變量時,需要指定變量能存儲的數據類型。Kotlin 提供了豐富的基本類型:

類型分類 數據類型 示例值 説明
整數類型 (整型) Byte 127 8位有符號整數(範圍:-128 ~ 127)
Short 32767 16位有符號整數(範圍:-32768 ~ 32767)
Int 2147483647 32位有符號整數(範圍:-2³¹ ~ 2³¹-1)
Long 9223372036854775807L 64位有符號整數(需以 L 結尾)
浮點類型 Float 3.14f 32位單精度浮點數(需以 f 結尾)
Double 3.1415926 64位雙精度浮點數(默認浮點類型)
字符類型 Char 'A' 單個字符,使用單引號包裹
布爾類型 Boolean true / false 邏輯真值類型
字符串類型 String "Hello" 字符序列,可用 """ 創建多行字符串
數組類型 Array arrayOf(1, 2, 3) 可存儲任意類型的元素
集合類型 List listOf("A", "B") 不可變列表
MutableList mutableListOf(1, 2, 3) 可變列表
Set setOf("A", "B") 不可變集合(自動去重)
MutableSet mutableSetOf("A", "B") 可變集合
Map mapOf("key" to "value") 不可變鍵值對集合
MutableMap mutableMapOf("k" to "v") 可變鍵值對集合
空類型 Any 任意類型值 Kotlin 所有類的超類
Unit Unit 表示無返回值(相當於 Java 的 void
Nothing - 表示不會返回(如拋異常的函數)
可空類型 String?, Int? null 允許存儲 null 值的類型

🎯 變量類型實際使用示例

地圖應用

  • 📍 地點名稱:String
  • ⭐ 星級評分:Double
  • 💬 評論數量:Int
  • ❤️ 是否收藏:Boolean

視頻應用

  • 🎬 視頻標題:String
  • 📺 頻道名稱:String
  • 👀 播放次數:Int

🧩 定義變量

定義變量的語法如下:

val 變量名: 數據類型 = 初始值

定義變量語法

示例:

fun main() {
    val count: Int = 2
    println(count)
}

輸出結果:

2

提示:

val 表示不可變變量(定義後不能修改值)

var 表示可變變量(定義後可重新賦值)

類型推斷

如果 Kotlin 能根據初始值判斷類型,則可以省略類型聲明:

val count = 2   // 自動推斷為 Int

若未賦初始值,必須明確指定類型:

val count: Int //但直接這樣寫,會報錯,要用後面講解的其他只是修復

使用變量與字符串模板

要在字符串中插入變量值,可使用 字符串模板:

fun main() {
    val count = 10
    println("You have $count unread messages.")
}

輸出:

You have 10 unread messages.

${} 可在字符串中放入表達式,例如:

println("Total: ${5 + 3}")

基本數學運算

整數變量可以直接參與運算,例如加減乘除:

fun main() {
    val unreadCount = 5
    val readCount = 100
    println("You have ${unreadCount + readCount} total messages.")
}

輸出:

You have 105 total messages.

4. 更新變量

在應用程序運行時,可能需要更新變量的值。例如購物車總金額會隨用户操作而變化。

val 與 var

  • val:只讀變量,值不可更改。
  • var:可變變量,值可更新。

示例:

fun main() {
    var cartTotal = 0       // 聲明可變變量
    println("Total: $cartTotal")

    cartTotal = 20          // 更新變量值
    println("Total: $cartTotal")
}

輸出:

Total: 0
Total: 20

增量運算符和減量運算符

可以使用表達式更新變量,例如增加或減少值:

fun main() {
    var count = 10
    println("You have $count unread messages.")

    count = count + 1       // 增加 1
    println("You have $count unread messages.")

    count++                 // 使用增量運算符,等同於 count = count + 1
    println("You have $count unread messages.")

    count--                 // 使用減量運算符,等同於 count = count - 1
    println("You have $count unread messages.")
}

You have 10 unread messages.
You have 11 unread messages.
You have 12 unread messages.
You have 11 unread messages.

提示:只有在變量值會發生變化時使用 var,否則優先使用 val 以保證代碼安全。

其他數據類型

Double

用於存儲小數,精度比 Float 高。

示例:

fun main() {
    val trip1 = 3.20
    val trip2 = 4.10
    val trip3 = 1.72
    val totalTripLength = trip1 + trip2 + trip3
    println("$totalTripLength miles left to destination")
}

輸出:

9.02 miles left to destination

String

用於存儲文本,用雙引號包裹。可通過 + 進行字符串拼接。

fun main() {
    val nextMeeting = "Next meeting: "
    val date = "January 1"
    val reminder = nextMeeting + date + " at work"
    println(reminder)
}

輸出:

Next meeting: January 1 at work

字符串中使用引號需要轉義:

fun main() {
    println("Say \"hello\"")
}

輸出:

Say "hello"

Boolean

只有兩個可能值:true 或 false。常用於表示開關狀態或條件判斷。

fun main() {
    val notificationsEnabled = false
    println(notificationsEnabled)
    println("Are notifications enabled? " + notificationsEnabled)
}

輸出:

false
Are notifications enabled? false

編碼規範

在 Kotlin 中,建議遵循以下編碼規範,這是 Google 推薦使用並且其他專業開發者也在遵循的一種 Android 代碼統一編寫方式:

  1. 變量命名
    • 使用 駝峯命名法(camelCase),以小寫字母開頭。
  val discount: Double = 0.20
  1. 類型聲明空格

冒號後添加一個空格。

val discount: Double = 0.20
  1. 運算符空格
  • 賦值運算符 =

  • 加號 +、減號 -、乘號 *、除號 / 前後都應有空格。

var pet = "Dog"
val sum = 1 + 2

  1. 行長度

每行代碼建議不超過 100 個字符,方便閲讀和維護。

在代碼中添加註釋

編寫代碼時,建議使用註釋説明代碼用途,幫助讀者理解。

單行註釋

使用 //,通常在符號後添加一個空格:

// 這是一個註釋
height = 1 // 假設初始高度為 1

多行註釋

使用 /* ... */,適合超過 100 個字符的長註釋:

/*
 * 這是一個很長的註釋
 * 可以佔用多行,只需要開始和結束,中間的*是為了好看寫的
 */

示例:單行註釋與多行註釋結合

/*
 * 該程序顯示用户收件箱中的消息數量
 */
fun main() {
    // 創建一個變量表示未讀消息數量
    var count = 10
    println("You have $count unread messages.")

    // 將消息數量減少 1
    count--
    println("You have $count unread messages.")
}

💡 提示:在常見的編輯器中輸入註釋時,IDE 會提供自動提示和快捷鍵支持,幫助你快速書寫註釋。註釋裏面的*不需要手動寫完,編輯器會自動生成,後面章節會詳細講解。現在主要是讓大家瞭解註釋的作用。

總結

做得很好!您已經瞭解了 Kotlin 中的變量及其用途,掌握瞭如何創建、更新和使用變量,嘗試了不同的基本數據類型(Int、Double、String、Boolean),並瞭解了 valvar 的區別。

核心要點

  • 變量是存儲單項數據的容器。
  • 必須先聲明變量,才能使用。
  • val 用於定義只讀變量,一旦賦值不可更改。
  • var 用於定義可變變量,可以更新值。
  • Kotlin 中建議儘可能使用 val
  • 變量聲明示例:val count: Int = 2
  • 類型推斷:提供初始值時可省略數據類型。
  • 常見基本類型:Int、Double、String、Boolean、Float。
  • 更新變量使用賦值運算符 =
  • 只有 var 聲明的變量才能被更新。
  • 增量運算符 ++ 用於加 1,減量運算符 -- 用於減 1。
  • 可用於字符串拼接,也可將其他類型(如 Int、Boolean)拼接到字符串。

📖 引用與版權説明

  • 本文內容部分參考自 Kotlin 官方文檔 及 Android Developers 官方指南,並結合作者的實戰經驗進行講解與整理。
  • 文中圖片(如代碼結構示意圖)來源於官方圖牀或官方文檔示例,僅用於教學與學習目的。
  • 代碼示例均為原創或根據官方示例改寫,遵循 Apache License 2.0 協議。
  • 若涉及版權問題或引用不當,請聯繫作者進行處理。

Add a new Comments

Some HTML is okay.