【大前端】【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)混合

  • 最强异步模型:协程

相关推荐
祖国的好青年15 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴15 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle
小米渣的逆袭15 小时前
Android ADB 完全使用指南
android·adb
儿歌八万首15 小时前
Jetpack Compose Canvas 进阶:结合 animateFloatAsState 让自定义图形动起来
android·动画·compose
zhangphil16 小时前
Android Page 3 Flow读sql数据库媒体文件,Kotlin
android·kotlin
神探小白牙17 小时前
echarts,3d堆叠图
android·3d·echarts
李白的天不白17 小时前
如何项目发布到github上
android·vue.js
summerkissyou198717 小时前
Android-RTC、NTP 和 System Time(系统时间)
android
小书房17 小时前
Kotlin使用体验及理解1
android·开发语言·kotlin
撩得Android一次心动18 小时前
Android Navigation 组件全面讲解
android·jetpack·navigation