Kotlin 基础
1. 变量与常量
kotlin
// val = 不可变引用(类似 Java final)
val name: String = "windCloud"
val age = 25 // 类型推断
// var = 可变引用
var counter = 0
counter = 1 // OK
// name = "other" // 编译错误
// 顶层变量
val GLOBAL_CONST = 100 // 编译时常量
var globalVar = "I am global"
2. 基本数据类型
kotlin
// 数值类型
val int: Int = 42
val long: Long = 9999999999L
val double: Double = 3.14
val float: Float = 3.14f
// 布尔
val isActive: Boolean = true
// 字符
val grade: Char = 'A'
// 字符串
val str: String = "Hello"
val str2 = String(charArrayOf('H', 'i'))
// 数组
val arr: Array<Int> = arrayOf(1, 2, 3)
val intArray = intArrayOf(1, 2, 3) // IntArray 更高效
val list = listOf(1, 2, 3) // 常用替代
3. 流程控制
kotlin
// if-else
val max = if (a > b) a else b
// when(替代 switch)
when (x) {
1 -> println("one")
2, 3 -> println("two or three")
in 4..10 -> println("in range")
else -> println("unknown")
}
// for 循环
for (i in 0..10) { } // 0 到 10(含)
for (i in 0 until 10) { } // 0 至 9(不含)
for (i in 0..10 step 2) { } // 步长 2
for (item in list) { }
// while / do-while
while (condition) { }
do { } while (condition)
// 区间判断
val inRange = x in 1..100
val notIn = x !in 1..100
4. 字符串
kotlin
val name = "Kotlin"
// 字符串模板
println("Hello, $name") // Hello, Kotlin
println("Length: ${name.length}") // Length: 6
// 换行
val multiline = """
|第一行
|第二行
|缩进保留
""".trimMargin()
// 原始字符串(无转义)
val path = """C:\Users\Thinkpad"""
// 字符串操作
str.uppercase()
str.lowercase()
str.substring(0, 4)
str.replace("old", "new")
str.split(",")
5. 空安全体系
kotlin
// 可空类型必须用 ? 声明
var nullable: String? = null
// 安全调用
nullable?.length // null 则返回 null
// Elvis 运算符 ?:
val len = nullable?.length ?: 0 // null 时返回 0
// 非空断言(慎用)
val len2 = nullable!!.length // null 时抛异常
// let:空安全执行块
nullable?.let {
println("Length is ${it.length}")
}
// run:在对象上执行代码块,返回结果
val result = str.run {
this.uppercase()
}
// apply:配置对象,返回对象本身
val person = Person().apply {
name = "windCloud"
age = 25
}
// also:额外操作,返回对象本身
val list2 = mutableListOf(1, 2).also {
println("Created list with $it")
}
// 完整示例
fun processString(input: String?): Int {
return input?.let {
if (it.isNotEmpty()) it.length
else 0
} ?: 0
}
快速对照表
| 关键字 | 用途 | 可变性 |
|---|---|---|
val |
声明常量 | 引用不可变 |
var |
声明变量 | 引用可变 |
? |
可空类型 | 值可为 null |
?. |
安全调用 | null 时短路 |
?: |
Elvis 运算符 | null 时提供默认值 |
!! |
非空断言 | null 时抛异常 |
let |
空安全执行 | 返回块结果 |
run |
执行代码块 | 返回块结果 |
apply |
配置对象 | 返回对象本身 |
also |
额外操作 | 返回对象本身 |