在 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()
最佳实践
- 优先使用
val,除非确实需要可变性 - 利用类型推断减少冗余代码
- 使用表达式形式使代码更简洁
- 善用空安全特性避免空指针异常
- 使用范围表达式简化循环和条件判断
Kotlin 的设计鼓励使用表达式而不是语句,这使代码更简洁、更函数式。很多在 Java 中是语句的结构,在 Kotlin 中都是表达式。