1. Kotlin基础语法的核心总结
约 886 字大约 3 分钟
1. 变量与数据类型
// 不可变变量(推荐优先使用)
val name: String = "John"
val age = 30 // 类型自动推断
// 可变变量
var score: Double = 95.5
var isActive = true // 布尔类型
// 空安全
var nullableStr: String? = null // 允许为 null
val length = nullableStr?.length ?: 0 // 安全调用 + Elvis 操作符
2. 函数
// 标准函数
fun sum(a: Int, b: Int): Int {
return a + b
}
// 单表达式函数
fun multiply(a: Int, b: Int) = a * b
// 默认参数
fun greet(name: String = "Guest") = "Hello, $name!"
// 可变参数
fun printAll(vararg items: String) {
items.forEach { println(it) }
}
3. 条件表达式
// if 作为表达式
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("Other")
}
// 智能类型转换
fun getStringLength(obj: Any): Int? {
if (obj is String) {
return obj.length // 自动转换为 String 类型
}
return null
}
4. 循环
// for 循环
for (i in 1..5) println(i) // 闭区间 [1, 5]
for (i in 1 until 5) println(i) // 半开区间 [1, 5)
for (i in 5 downTo 1 step 2) println(i) // 降序,步长 2
// while 循环
while (x > 0) { x-- }
do { x++ } while (x < 10)
// 遍历集合
val list = listOf("a", "b", "c")
for ((index, value) in list.withIndex()) {
println("Index $index: $value")
}
5. 集合
// 不可变集合
val numbers = listOf(1, 2, 3) // 只读列表
val map = mapOf("key1" to 1, "key2" to 2)
// 可变集合
val mutableList = mutableListOf(1, 2, 3)
mutableList.add(4)
// 集合操作
val doubled = numbers.map { it * 2 } // [2, 4, 6]
val evenNumbers = numbers.filter { it % 2 == 0 } // [2]
6. 类与对象
// 普通类,有两个成员变量name, age; 提供了一个方法 greet()
class Person(var name: String, var age: Int) {
fun greet() = "Hello, I'm $name"
}
// 数据类(自动生成 toString、equals、hashCode 等)
data class User(val id: Int, val name: String)
// 单例
object Settings {
val appName = "MyApp"
}
// 继承(默认类不可继承,需加 open)
open class Animal(val name: String) {
open fun sound() = "..."
}
class Dog(name: String) : Animal(name) {
override fun sound() = "Woof!"
}
7. 空安全
// 可空类型
var email: String? = null
email?.length // 安全调用,email 为 null 时返回 null
email!!.length // 非空断言,email 为 null 时抛出异常
// 安全转换
val person: Person? = getPerson()
val name = person?.name ?: "Unknown" // Elvis 操作符
8. 扩展函数 / 属性
// 扩展函数
fun String.lastChar() = this[this.length - 1]
// 扩展属性
val String.firstChar: Char
get() = if (isEmpty()) ' ' else this[0]
9.高阶函数与 Lambda
// 高阶函数(接收函数作为参数)
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
// Lambda 表达式
val sum = calculate(1, 2) { x, y -> x + y }
// 集合高阶函数
val numbers = listOf(1, 2, 3, 4)
val sumEven = numbers.filter { it % 2 == 0 }.sum() // 6
10. 异常处理
try {
val result = divide(10, 0)
} catch (e: ArithmeticException) {
println("Error: ${e.message}")
} finally {
// 总是执行
}
// 作为表达式
val result = try {
divide(10, 2)
} catch (e: Exception) {
0
}
11. 作用域函数
val person = Person("Alice", 25)
// let:对对象执行操作并返回结果
val nameLength = person.let { it.name.length }
// with:对同一个对象执行多个操作
with(person) {
age = 26
println("$name is $age years old")
}
// apply:配置对象并返回自身
val newPerson = Person("", 0).apply {
name = "Bob"
age = 30
}
12. main启动
class BasicTest {
// 高阶函数(接收函数作为参数)
fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
}
fun main(args: Array<String>) {
val basic = BasicTest()
val num = basic.calculate(1, 2) { a, b -> a + b }
println("hello world ${num}")
}
13. 其他特性
// 字符串模板
val name = "Alice"
println("Hello, $name!") // 简单变量
println("Price: ${goods.price}") // 表达式
// 区间
if (x in 1..10) println("In range")
if (x !in 11..20) println("Not in range")
// 解构声明
val (name, age) = getUser() // 用于数据类
// 类型转换
alue as String
value as? String //(安全转换)
// 多行字符串
val desc = """
多行文本字符串
"""
// 延迟初始化
lateinit var config: Config
Loading...