探究新语言:Kotlin 快速入门指南
·
本文基于《第一行代码 Android(第 3 版)》第 2 章核心内容,为 Android 开发者打造一份清晰、可落地的 Kotlin 入门教程,帮你从 Java 平滑过渡,掌握现代 Android 开发语言。
一、Kotlin 语言简介:为什么要学 Kotlin?
Kotlin 是由 JetBrains 开发的静态类型编程语言,2017 年被 Google 宣布为 Android 官方开发语言,如今已成为 Android 开发的首选语言。
1. 核心优势
- 100% 与 Java 互操作:可直接调用 Java 代码,也可被 Java 调用,无缝兼容现有项目。
- 语法简洁:大幅减少样板代码(如无需手动写
findViewById、getter/setter),代码量比 Java 少约 40%。 - 空安全设计:从语法层面避免空指针异常(NPE),这是 Android 应用崩溃的首要原因。
- 函数式编程支持:原生支持 Lambda、高阶函数,让代码更简洁、更易读。
- 多平台能力:可编译为 JVM 字节码、JavaScript、原生机器码,实现跨平台开发。
2. 与 Java 的核心区别
| 特性 | Java | Kotlin |
|---|---|---|
| 空安全 | 需手动判空,易 NPE | 类型系统区分可空 / 非空,编译期检查 |
| 语法 | verbose,样板代码多 | 简洁,支持类型推导 |
| 函数式 | 需借助 Java 8+ Stream | 原生支持 Lambda、高阶函数 |
| 类与继承 | 类默认 final,需手动 open | 类默认可继承,支持数据类、密封类 |
二、如何运行 Kotlin 代码
Kotlin 代码有多种运行方式,适合不同学习阶段:
1. Kotlin Playground(在线运行)
- 访问 Kotlin 官方 Playground,无需安装环境,直接在线编写、运行 Kotlin 代码。
- 适合快速验证语法、测试小片段,是入门阶段的最佳选择。
2. IntelliJ IDEA / Android Studio
- 创建 Kotlin 项目:在 IDE 中选择「New Project → Kotlin」,即可创建纯 Kotlin 项目。
- 运行单个文件:创建
.kt文件,编写main函数,点击左侧运行按钮即可执行。 - Android 项目:在 Android Studio 中创建 Android 项目时直接选择 Kotlin 语言,代码会编译为 APK 运行在设备上。
3. 命令行运行
- 安装 Kotlin 编译器后,可通过
kotlinc命令编译.kt文件为.class,再用kotlin命令运行。 - 适合了解底层编译流程,日常开发不推荐。
三、编程之本:变量和函数
1. 变量声明
Kotlin 用 val 和 var 声明变量,无需显式指定类型(自动类型推导):
// val:不可变变量(类似 Java final),只能赋值一次
val name: String = "Kotlin"
val age = 3 // 自动推导为 Int 类型
// var:可变变量,可多次赋值
var count = 0
count = 10
2. 函数声明
用 fun 关键字声明函数,语法更简洁:
// 无返回值函数(Unit 可省略)
fun sayHello(): Unit {
println("Hello Kotlin!")
}
// 有返回值函数
fun add(a: Int, b: Int): Int {
return a + b
}
// 单表达式函数(可简化为一行)
fun multiply(a: Int, b: Int) = a * b
3. 函数参数默认值与具名参数
// 默认参数
fun printMessage(message: String, prefix: String = "Info: ") {
println("$prefix$message")
}
// 调用时可省略默认参数
printMessage("Hello") // 输出:Info: Hello
printMessage("Warning", "Warn: ") // 输出:Warn: Warning
// 具名参数(解决参数顺序问题)
printMessage(prefix = "Debug: ", message = "Test")
四、程序的逻辑控制
1. 条件判断:if 表达式
Kotlin 中 if 是表达式,可直接返回值,替代 Java 中的三元运算符:
val max = if (a > b) a else b
2. 多条件判断:when 表达式
替代 Java 中的 switch-case,功能更强大:
fun describe(obj: Any): String = when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long number"
!is String -> "Not a string"
else -> "Unknown"
}
3. 循环:for、while
for循环:支持遍历区间、集合,语法更简洁:// 遍历 1 到 10(包含两端) for (i in 1..10) { println(i) } // 遍历 1 到 9(不包含 10) for (i in 1 until 10) { println(i) } // 遍历集合 val list = listOf("A", "B", "C") for (item in list) { println(item) }while/do-while:与 Java 用法一致。
五、面向对象编程
1. 类与对象
// 定义类
class Person(val name: String, var age: Int) {
fun sayHi() {
println("Hi, I'm $name, $age years old.")
}
}
// 创建对象(无需 new 关键字)
val person = Person("Tom", 20)
person.sayHi()
2. 继承与多态
- Kotlin 类默认
final,需用open关键字修饰才能被继承:open class Animal { open fun makeSound() { println("Animal makes sound") } } class Dog : Animal() { override fun makeSound() { println("Woof!") } }
3. 数据类与单例类
- 数据类:自动生成
equals()、hashCode()、toString()等方法,适合存储数据:data class User(val id: Int, val name: String) - 单例类:用
object关键字实现单例模式:object Singleton { fun doSomething() { println("Singleton instance") } }
六、Lambda 编程
Lambda 是 Kotlin 函数式编程的核心,让代码更简洁:
1. 基本语法
// 完整 Lambda 语法
val sum: (Int, Int) -> Int = { a: Int, b: Int -> a + b }
// 简化版(类型推导)
val sum = { a: Int, b: Int -> a + b }
// 调用 Lambda
val result = sum(1, 2) // 结果为 3
2. 集合操作
Lambda 在集合操作中威力巨大,替代 Java 繁琐的循环:
val list = listOf(1, 2, 3, 4, 5)
// 过滤偶数
val evenList = list.filter { it % 2 == 0 }
// 映射为平方
val squareList = list.map { it * it }
// 求和
val total = list.reduce { acc, i -> acc + i }
七、空指针检查:Kotlin 的核心安全特性
Kotlin 从语法层面杜绝空指针异常(NPE):
1. 可空类型与非空类型
- 非空类型:
String、Int,不能赋值为null - 可空类型:
String?、Int?,可以赋值为null
var name: String = "Tom"
name = null // 编译错误
var nullableName: String? = "Tom"
nullableName = null // 编译通过
2. 安全调用与 Elvis 操作符
// 安全调用:?. ,对象为空时返回 null
val length = nullableName?.length
// Elvis 操作符:?: ,为空时返回默认值
val length = nullableName?.length ?: 0
3. 非空断言
// !! :断言对象非空,为空时抛出 NPE(谨慎使用)
val length = nullableName!!.length
八、Kotlin 中的小魔术
1. 字符串模板
在字符串中直接嵌入变量 / 表达式,无需拼接:
val name = "Tom"
println("Hello, $name!") // 输出:Hello, Tom!
println("1 + 2 = ${1 + 2}") // 输出:1 + 2 = 3
2. 区间与范围
// 闭区间:1..10
// 半开区间:1 until 10
// 倒序区间:10 downTo 1
// 步长:1..10 step 2
3. 解构声明
将对象 / 集合解构为多个变量:
val (id, name) = User(1, "Tom")
println("id: $id, name: $name")
九、本章总结:Kotlin 入门核心要点
第 2 章是 Kotlin 语言的基础篇,核心目标是:
- 理解 Kotlin 的优势与定位,建立学习动力。
- 掌握 Kotlin 代码的运行方式,打通开发环境。
- 学习变量、函数、逻辑控制等基础语法,完成从 Java 到 Kotlin 的过渡。
- 理解面向对象、Lambda、空安全等核心特性,为 Android 开发打下基础。
Kotlin 语法简洁、安全、强大,是现代 Android 开发的必备技能。掌握本章内容后,你就可以顺利进入后续 Android 组件与 UI 开发的学习。
下一步学习建议
- 语法练习:在 Kotlin Playground 中练习变量、函数、Lambda 等语法,熟悉 Kotlin 写法。
- 空安全练习:尝试编写可空类型代码,体会
?.、?:等操作符的作用。 - 集合操作:用 Lambda 实现集合的过滤、映射、求和等操作,感受函数式编程的便捷。
- Android 结合:在 Android 项目中用 Kotlin 编写 Activity,体验
findViewById替代方案(如 View Binding)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)