2.Android Compose 基础系列:在 Kotlin 中创建和使用变量

65 阅读6分钟

在应用开发中,有些内容是固定的,例如“设置”中的菜单项;而有些内容会不断变化,比如新闻应用中的标题、来源或发布时间。为了让这些变化自动更新,而不是每次都修改代码,我们需要使用 变量(variable)

🎯 学习目标

  • 了解什么是变量,并学会定义和更新变量
  • 掌握如何为变量选择合适的数据类型
  • 学会在代码中添加注释,提升可读性

什么是变量

在编程中,变量就像一个带标签的盒子,用来存放某个数据值。

  • 标签(变量名):告诉我们盒子里装的是什么
  • 盒子里的值:就是存放的数据

举个例子:

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

当你想修改名字时,只需替换盒子里的值,而不必修改整个程序。

为什么需要变量

如果在代码中直接写死所有值,程序只能应对特定情况。
使用变量就像写信时使用模板,只需替换不同内容即可应对多种情况:

尊敬的 { name }:
您好!很高兴今天能在 { location } 与您会晤。希望 { date } 还能见到您。
祝您天天好心情!

同样地,在应用中,你可以用变量来代替变化的数据:

  • 👤 用户名:name
  • 📍 地点:location
  • ⏰ 时间:date

这样,应用就能根据不同用户或场景自动生成对应内容,而不需要每次都重新编写逻辑。

📊Kotlin 常见数据类型

在定义变量时,需要指定变量能存储的数据类型。Kotlin 提供了丰富的基本类型:

类型分类数据类型示例值说明
整数类型 (整型)Byte1278位有符号整数(范围:-128 ~ 127)
Short3276716位有符号整数(范围:-32768 ~ 32767)
Int214748364732位有符号整数(范围:-2³¹ ~ 2³¹-1)
Long9223372036854775807L64位有符号整数(需以 L 结尾)
浮点类型Float3.14f32位单精度浮点数(需以 f 结尾)
Double3.141592664位双精度浮点数(默认浮点类型)
字符类型Char'A'单个字符,使用单引号包裹
布尔类型Booleantrue / false逻辑真值类型
字符串类型String"Hello"字符序列,可用 """ 创建多行字符串
数组类型ArrayarrayOf(1, 2, 3)可存储任意类型的元素
集合类型ListlistOf("A", "B")不可变列表
MutableListmutableListOf(1, 2, 3)可变列表
SetsetOf("A", "B")不可变集合(自动去重)
MutableSetmutableSetOf("A", "B")可变集合
MapmapOf("key" to "value")不可变键值对集合
MutableMapmutableMapOf("k" to "v")可变键值对集合
空类型Any任意类型值Kotlin 所有类的超类
UnitUnit表示无返回值(相当于 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 协议。
  • 若涉及版权问题或引用不当,请联系作者进行处理。