2-1-1 快速掌握Kotlin-kotlin中变量&语句&表达式

在 Kotlin 中,变量、语句和表达式是编程的基础概念。让我详细解释:

1. 变量(Variables)

声明方式

kotlin 复制代码
// 只读变量(推荐使用,类似 Java 的 final)
val name = "Kotlin"  // 类型自动推断为 String
val age: Int = 25     // 显式声明类型

// 可变变量
var count = 0
var price: Double = 99.9

特点

  • val(value)只读变量,赋值后不能修改
  • var(variable)可变变量,可以重新赋值
  • 类型可自动推断,也可显式声明
  • 变量名使用驼峰命名法

空安全

kotlin 复制代码
var nullableString: String? = null  // 可空类型
var nonNullString: String = "Hello"  // 非空类型(默认)

val length = nullableString?.length  // 安全调用
val length2 = nullableString!!.length  // 非空断言(可能抛异常)
val length3 = nullableString?.length ?: 0  // Elvis 操作符

2. 语句(Statements)

语句是执行操作的代码单元,不返回值:

赋值语句

kotlin 复制代码
val x = 10
var y = 20
y = 30  // 重新赋值

控制流语句

kotlin 复制代码
// if 语句
if (x > 5) {
    println("x is greater than 5")
} else {
    println("x is not greater than 5")
}

// when 语句(类似 switch)
when (x) {
    1 -> println("One")
    2 -> println("Two")
    in 3..10 -> println("3 to 10")
    else -> println("Other")
}

// for 循环
for (i in 1..5) {
    println(i)
}

val items = listOf("apple", "banana", "orange")
for (item in items) {
    println(item)
}

// while 循环
while (x > 0) {
    println(x)
    x--
}

3. 表达式(Expressions)

表达式有值,可以放在赋值符号右边:

赋值表达式

kotlin 复制代码
val result = 5 + 3 * 2  // 表达式值为 11

if 表达式(在 Kotlin 中,if 是表达式)

kotlin 复制代码
val max = if (a > b) a else b  // if 返回一个值

val grade = if (score >= 90) {
    "A"
} else if (score >= 80) {
    "B"
} else {
    "C"
}

when 表达式

kotlin 复制代码
val description = when (number) {
    1 -> "One"
    2 -> "Two"
    else -> "Many"
}

val type = when {
    x > 0 -> "Positive"
    x < 0 -> "Negative"
    else -> "Zero"
}

try-catch 表达式

kotlin 复制代码
val number = try {
    "123".toInt()
} catch (e: NumberFormatException) {
    0  // 默认值
}

Lambda 表达式

kotlin 复制代码
val sum = { a: Int, b: Int -> a + b }
println(sum(5, 3))  // 输出 8

val numbers = listOf(1, 2, 3, 4, 5)
val doubled = numbers.map { it * 2 }  // [2, 4, 6, 8, 10]

4. 关键区别和特性

表达式 vs 语句

kotlin 复制代码
// 语句(不返回值)
fun printMessage(message: String) {
    println(message)
}

// 表达式函数(单表达式函数)
fun add(a: Int, b: Int) = a + b

// if 作为表达式(返回类型推断为 Int)
val result = if (condition) 1 else 2

作用域函数(特殊的表达式)

kotlin 复制代码
val person = Person().apply {
    name = "Alice"
    age = 25
}

val length = person.let {
    it.name.length
}

val modified = person.run {
    name = "Bob"
    this  // 返回对象本身
}

范围表达式

kotlin 复制代码
// 范围表达式
val range1 = 1..10  // 包含 10
val range2 = 1 until 10  // 不包含 10
val range3 = 10 downTo 1  // 递减
val range4 = 1..10 step 2  // 步长为 2

5. 实用示例

kotlin 复制代码
// 变量声明和初始化
val name = "Kotlin"
var counter = 0

// 表达式组合
val status = when {
    counter > 10 -> "High"
    counter > 5 -> "Medium"
    counter > 0 -> "Low"
    else -> "Zero"
}

// 使用 Elvis 操作符处理空值
val displayName = nullableName ?: "Guest"

// 集合操作(函数式表达式)
val numbers = listOf(1, 2, 3, 4, 5)
val evenSquares = numbers
    .filter { it % 2 == 0 }
    .map { it * it }
    .sum()

最佳实践

  1. 优先使用 val,除非确实需要可变性
  2. 利用类型推断减少冗余代码
  3. 使用表达式形式使代码更简洁
  4. 善用空安全特性避免空指针异常
  5. 使用范围表达式简化循环和条件判断

Kotlin 的设计鼓励使用表达式而不是语句,这使代码更简洁、更函数式。很多在 Java 中是语句的结构,在 Kotlin 中都是表达式。

相关推荐
云诗卡达5 小时前
Flutter安卓APP接入极光推送和本地通知
android·flutter
Jony_5 小时前
Android 设计架构演进历程
android·android jetpack
犹若故人归6 小时前
Android开发应用--高级UI界面设计
android·ui
zzhongcy7 小时前
复合索引 (item1, item2, item3 ) > (?, ?, ?) 不起作用,EXPLAIN 后type=ALL(全表扫描)
android·数据库
冬奇Lab8 小时前
稳定性性能系列之十三——CPU与I/O性能优化:Simpleperf与存储优化实战
android·性能优化
像风一样自由8 小时前
android native 中的函数动态注册方式总结
android·java·服务器·安卓逆向分析·native函数动态注册·.so文件分析
nono牛9 小时前
Makefile中打印变量
android
没有了遇见10 小时前
Android 关于RecycleView和ViewPager2去除边缘反馈
android
城东米粉儿10 小时前
android gzip数据压缩 笔记
android
城东米粉儿10 小时前
android 流量优化笔记
android