【大前端】【Android】 Kotlin 语法超详细解析(2025 最新)

🚀 Kotlin 语法超详细解析(2025 最新)

------从基础到进阶,带你彻底掌握 Kotlin

Kotlin 是 Google 推荐的 Android 主力开发语言,也是 JVM 生态中最受欢迎的现代语言之一。它以简洁、安全、函数式编程友好而著称。本篇文章将系统性讲解 Kotlin 全语法体系,适用于 Android、后端(Ktor/Spring)、跨端开发者。


📌 目录

  1. Kotlin 的语言特点

  2. 基础语法

  3. 变量、常量与类型系统

  4. Null Safety(空安全)

  5. 函数(函数类型 / Lambda / 高阶函数)

  6. 类与对象(构造、继承、数据类、密封类)

  7. 集合及常用操作

  8. 扩展函数 & 扩展属性

  9. 对象声明与单例模式

  10. 委托(by 关键字)

  11. 泛型(协变 / 逆变)

  12. 协程(Coroutine)入门

  13. Kotlin 常用语法糖与技巧


1. Kotlin 的语言特点

特性 描述
简洁 代码量比 Java 少 30%+
空安全 杜绝 NullPointerException
完全兼容 Java 运行在 JVM 上,可调用全部 Java 类库
函数式编程支持 map/filter/reduce、lambda、高阶函数
协程 最强大的异步编程能力
扩展函数 可无侵入扩展类能力
data class / sealed class 状态建模特别常用

2. 基础语法

main 函数

复制代码
fun main() {
    println("Hello Kotlin")
}

注释

复制代码
// 单行
/* 多行 */
/** 文档注释 */

3. 变量、常量、类型系统

可变与不可变

复制代码
val name = "Tom"   // 不可变
var age = 18       // 可变

类型推断

Kotlin 自动推断类型:

复制代码
val number = 10        // Int
val message = "Hello"  // String

显式声明:

复制代码
val count: Int = 10

4. Null Safety(空安全)

Kotlin 最大的亮点之一。

可空类型

复制代码
var name: String? = null

安全调用符 ?.

复制代码
println(user?.name)

Elvis 操作符 ?:

复制代码
val displayName = name ?: "Unknown"

非空断言 !!

复制代码
val len = name!!.length  // 若 name 为 null 会抛异常

let 使用(常用)

复制代码
name?.let {
    println("length = ${it.length}")
}

5. 函数

基本函数

复制代码
fun add(a: Int, b: Int): Int {
    return a + b
}

单表达式函数

复制代码
fun add(a: Int, b: Int) = a + b

默认参数

复制代码
fun greet(name: String = "Tom", age: Int = 18) { }

可变参数 vararg

复制代码
fun sum(vararg nums: Int) { }

Lambda 表达式

复制代码
val add = { a: Int, b: Int -> a + b }

高阶函数(函数作为参数)

复制代码
fun operate(a: Int, b: Int, op: (Int, Int) -> Int): Int {
    return op(a, b)
}

operate(1, 2, add)
operate(1, 2) { x, y -> x + y }

6. 类与对象

类定义

复制代码
class Person(val name: String, var age: Int) {
    fun speak() {
        println("Hi, I'm $name")
    }
}

主构造与次构造

复制代码
class User(val name: String) {
    var age: Int = 0

    constructor(name: String, age: Int): this(name) {
        this.age = age
    }
}

继承

复制代码
open class Animal {
    open fun run() {}
}

class Dog: Animal() {
    override fun run() {
        println("Dog running")
    }
}

7. 数据类(data class)

自动生成:

  • equals

  • hashCode

  • toString

  • copy

    data class User(val name: String, val age: Int)

    val u = User("Tom", 20)
    val u2 = u.copy(age = 30)


8. 密封类 sealed class(状态机最常用)

复制代码
sealed class Result {
    data class Success(val data: String): Result()
    data class Error(val msg: String): Result()
    object Loading: Result()
}

fun handle(result: Result) = when(result) {
    is Result.Success -> println(result.data)
    is Result.Error   -> println(result.msg)
    Result.Loading    -> println("loading")
}

9. 集合与常用操作

List / MutableList

复制代码
val list = listOf(1, 2, 3)
val mut = mutableListOf(1, 2, 3)

Map

复制代码
val map = mapOf("name" to "Tom")

常用操作(超强)

复制代码
list.map { it * 2 }
list.filter { it > 1 }
list.any { it == 1 }
list.all { it > 0 }
list.reduce { acc, i -> acc + i }

链式调用:

复制代码
users
    .filter { it.age > 18 }
    .sortedBy { it.age }
    .map { it.name }

10. 扩展函数 / 属性

扩展函数

复制代码
fun String.isEmail(): Boolean {
    return this.contains("@")
}

"abc@test.com".isEmail()

扩展属性

复制代码
val String.lastChar: Char
    get() = this[this.length - 1]

11. 对象声明与单例模式

Kotlin 内置单例写法:

复制代码
object Config {
    val version = "1.0"
    fun load() { }
}

调用:

复制代码
Config.load()

12. 委托(by)

类委托

复制代码
interface Printer {
    fun print()
}

class SimplePrinter: Printer {
    override fun print() = println("printing")
}

class SmartPrinter(printer: Printer): Printer by printer

属性委托

复制代码
val lazyValue: String by lazy {
    println("init")
    "Hello"
}

13. 泛型 & 协变 / 逆变

泛型定义

复制代码
class Box<T>(val value: T)

协变 out(只能生产)

复制代码
interface Producer<out T> {
    fun produce(): T
}

逆变 in(只能消费)

复制代码
interface Consumer<in T> {
    fun consume(item: T)
}

14. 协程(Coroutine)简介

Kotlin 的协程是 轻量级线程,是 Android 异步代码的核心。

launch

复制代码
GlobalScope.launch {
    delay(1000)
    println("Done")
}

async / await

复制代码
val result = async { getData() }
println(result.await())

withContext 切线程

复制代码
withContext(Dispatchers.IO) {
    saveToDB()
}

15. Kotlin 常用语法糖与技巧

apply / let / run / with / also

apply:配置对象

复制代码
val p = Person().apply {
    name = "Tom"
    age = 20
}

let:避免空指针

复制代码
name?.let {
    println(it)
}

also:链式处理

复制代码
val list = mutableListOf(1,2,3).also {
    it.add(4)
}

when(更强大的 switch)

复制代码
when(x) {
    1 -> println("one")
    in 2..5 -> println("range")
    else -> println("other")
}

字符串模板

复制代码
val msg = "name=$name age=${user.age}"

解构语法

复制代码
val (name, age) = User("Tom", 20)

📌 总结

Kotlin 是一门现代、高效、安全且表达能力极强的语言,它的核心优势包括:

  • 更安全的 Null Safety

  • 更简洁的语法

  • 扩展函数/data class/密封类 等专为业务逻辑建模打造

  • 多范式(OOP + FP)混合

  • 最强异步模型:协程

相关推荐
珹洺2 小时前
Java-Spring实战指南(三十四)Android Service实现后台音乐播放功能
android·java·spring
四维碎片9 小时前
【Qt】配置安卓开发环境
android·开发语言·qt
百***99249 小时前
MySql的慢查询(慢日志)
android·mysql·adb
安卓兼职framework应用工程师9 小时前
android 15.0 Launcher3长按拖拽时,获取当前是哪一屏,获取当前多少个应用图标
android·拖拽·workspace·长按拖拽
雨白9 小时前
Jetpack Compose Navigation3:返回栈管理、大屏适配与自定义策略
android
CIb0la13 小时前
安卓16系统升级后(Google pixel 8/8pro 9/9pro xl 10/10pro xl)救砖及Root方法
android·运维·生活
Ya-Jun13 小时前
项目实战Now in Android:项目模块说明
android·架构·kotlin
@Aurora.14 小时前
【MySQL】基础
android
ooooooctober14 小时前
PHP代码审计框架性思维的建立
android·开发语言·php