Skip to content

第 0 章 Kotlin 学习计划:从 0 到 1 的 14 天路线图

本章目的:在你写第一行 Kotlin 之前,先告诉你"这条路要走多久、长什么样、容易在哪摔跤、学完后能做什么"。把地图看清楚了,再上路才不慌。


0.1 学习这件事,先想清楚 3 个问题

0.1.1 你为什么学 Kotlin?

不同动机决定了不同的学习侧重点:

动机重点章节可以略过的部分
想做 Android 开发1-9 章 + Android 拓展(自学)协程进阶(StateFlow/SharedFlow 后续再学)
后端转 Kotlin(Spring Boot)1-9 章,重点 Null 安全 + 协程 + 数据类DSL / KMP
写 Gradle 构建脚本1-4 章 + 第 8 章作用域函数 + DSL协程 / Android
跨平台 KMP(iOS+Android 共享)全部 + KMP 拓展/
单纯好奇 / 学习现代语言全部按顺序/

📌 小白建议:先按本笔记从 1 到 10 章学一遍,把基础打牢;之后再根据职业方向深挖。

0.1.2 你已经会什么?

你的背景上手速度难点会出现在哪
写过 Java1-2 天能流畅写 KotlinNull 安全的语法糖、扩展函数的思维方式
写过 Python / JS3-5 天静态类型、泛型、协变逆变
写过 C / C++2-3 天函数式 API、Lambda、协程
完全零基础2-3 周面向对象基础需要补

0.1.3 你能投入多少时间?

本笔记规划是每天 1.5–2 小时,14 天能走完。如果你只能每天半小时,那就翻倍到 28 天。

💡 重要心法不要"看完笔记 = 学会"。每章结束你必须能闭着眼睛把那章的代码自己写出来,否则就再来一遍。代码是肌肉记忆。


0.2 整体路线图(14 天)

                                ★ Kotlin 14 天通关图 ★

   Day 1-2          Day 3-5            Day 6-8           Day 9-11        Day 12-14
   ┌─────────┐     ┌─────────┐        ┌─────────┐       ┌──────────┐    ┌──────────┐
   │  入门    │────►│  进阶    │───────►│  熟练    │──────►│ 异步并发  │───►│  实战    │
   │ 1-3 章  │     │ 4-6 章  │        │ 7-8 章  │       │  9 章    │    │ 10 章   │
   └─────────┘     └─────────┘        └─────────┘       └──────────┘    └──────────┘
   能跑通          能写"像 Kotlin"     能看懂开源         协程不晕         能做项目
   Hello World    的简单程序           项目代码          能写并发          上简历

阶段 1:入门(Day 1-2,第 1-3 章)

目标:理解 Kotlin 的"哲学",搭好开发环境,能写会变量和控制流。

  • ✅ 能向朋友解释「Kotlin 跟 Java 的区别」
  • ✅ 在 IDEA 里跑通 Hello World
  • ✅ 看到 val name: String = "Alice" 不再发懵

容易摔跤的地方

  • 装环境的时候 IDEA / JDK 版本不对应
  • val 当成 Java 的 final 用,结果发现还能"改对象内部的字段"

阶段 2:进阶(Day 3-5,第 4-6 章)

目标:理解函数式编程的"基本招式",开始能写出 Kotlin 风格代码。

  • ✅ 能用 Lambda 写 list.filter { it > 10 }.map { it * 2 }
  • ✅ 不再用 if (x != null) 检查,改用 x?.let { }
  • ✅ 能看懂别人写的 data class User(val name: String, val age: Int)

容易摔跤的地方

  • Lambda 里 it 是啥?为什么能省略?
  • ?.!! 到底什么时候用哪个?

阶段 3:熟练(Day 6-8,第 7-8 章)

目标:能写出"看起来很 Kotlin"的代码(Kotliner 们叫 idiomatic Kotlin)。

  • ✅ 能用集合操作链式处理数据,不再写 for 循环
  • ✅ 能区分 let/run/with/apply/also 五兄弟的差别
  • ✅ 看 GitHub 上的 Kotlin 开源项目不再"看一眼劝退"

容易摔跤的地方

  • 啥时候用 List 啥时候用 Sequence?性能差别在哪?
  • applyalso 长得一样,到底怎么选?

阶段 4:异步并发(Day 9-11,第 9 章)

目标:理解协程,能写非阻塞的并发代码。

  • ✅ 能用 launch / async / await 写并发
  • ✅ 能用 Flow 处理流式数据
  • ✅ 知道为什么协程比 Thread 轻

容易摔跤的地方

  • Job / Scope / Context 三个概念绕晕
  • "结构化并发"是个啥?
  • Flow 和 RxJava 的 Observable 啥区别?

阶段 5:实战(Day 12-14,第 10 章)

目标:把所有知识串起来,做一个能写到简历上的小项目。

  • ✅ 完成一个 CLI 版的 todo 工具:增/删/改/查/持久化到 JSON
  • ✅ 用上数据类、集合操作、文件 IO、协程

0.3 每章统一的学习方法

每一章都按这个流程走,效率最高:

   ┌────────────────────────────────────────────────────────────┐
   │  Step 1   通读文档(30 min)                                 │
   │  ───────────────────────────────────────────────────        │
   │  目标:搞懂"为什么这么设计"。先记概念,不抠细节。               │
   ├────────────────────────────────────────────────────────────┤
   │  Step 2   打开浏览器看 demo(10 min)                         │
   │  ───────────────────────────────────────────────────        │
   │  目标:把抽象概念通过可视化"看见"。直观印象最强。               │
   ├────────────────────────────────────────────────────────────┤
   │  Step 3   亲手敲 code/ 下的示例(30-60 min)                  │
   │  ───────────────────────────────────────────────────        │
   │  目标:肌肉记忆。**禁止复制粘贴**!                            │
   ├────────────────────────────────────────────────────────────┤
   │  Step 4   做章末面试题(20 min)                              │
   │  ───────────────────────────────────────────────────        │
   │  目标:检验是否真的会了。答不上来回去再读一遍文档。              │
   ├────────────────────────────────────────────────────────────┤
   │  Step 5   写一个自己的小变体(30 min)                         │
   │  ───────────────────────────────────────────────────        │
   │  目标:把知识"用到自己脑子里"。比如"如果改成 …… 怎么写?"。     │
   └────────────────────────────────────────────────────────────┘

💡 生活化类比:学语言就像学游泳。只看动作要领(看文档)永远学不会,必须下水(写代码);下水也别只在浅水区扑腾,必须呛过水(写错过、debug 过)才记得住。


0.4 学完之后能干什么

方向你可以做的事
Android做一个完整的 Android 应用(结合 Jetpack Compose)
后端用 Spring Boot 写 REST API;用 Ktor 写轻量 Web 服务
命令行写跨平台的 CLI 工具,编译成 native 二进制
数据处理用 Kotlin Notebook + DataFrame 做数据分析
跨平台用 KMP 在 iOS + Android 共享业务逻辑代码
构建脚本把 Groovy 写的 build.gradle 升级成 build.gradle.kts

0.5 常见误区 & 心态建议

误区 1:「Kotlin 是 Java 的语法糖,不学也行」

错。 Kotlin 不只是语法糖:

  • Null 安全是 类型系统层面 的保障,不是糖
  • 协程是 编译器协作 的状态机,不是 Thread 的封装
  • 扩展函数让你可以"给已有类加方法",是 Java 里写不出来的设计

误区 2:「先看完所有文档再写代码」

错。 学语言一定是 看一点 → 写一点 → 再看一点。从第 2 章开始就该亲手写。

误区 3:「面试题都是八股,工作用不到」

错。 Kotlin 的面试题大多围绕"为什么这样设计"展开,比如:

  • "为什么 List 没有 add() 方法?"
  • "applyalso 区别在哪?"

回答这些题的过程,本身就是在加深对语言的理解。

心态建议

🌱 遇到看不懂就先跳过。第一次学习不需要 100% 理解,能记住"有这么个东西"就够了,第二轮回头再看会豁然开朗。

🔥 别跟 Java/Python 一直对比。前期对比有助于上手,后期"拿 Java 思维写 Kotlin"反而是阻碍。


0.6 学习资源清单

入门

进阶

  • 📖 《Kotlin 实战》(Dmitry Jemerov、Svetlana Isakova 著)—— 经典教科书
  • 📖 Kotlin 官方文档 —— 写得非常清楚
  • 🎓 Kotlin Koans —— 通过解题学语法

协程

实战


0.7 学完一个 self-check 清单

走完 14 天,请用下面这份 checklist 验收自己。打 ≥ 8 个勾代表"基础合格"。

  • [ ] 能解释 valvar 的区别,并给出"啥时候用 val"的判断标准
  • [ ] 能写出 data class User(val name: String, val age: Int) 并解释它生成了哪些方法
  • [ ] 能用一句话解释「Kotlin Null 安全是怎么避免 NPE 的」
  • [ ] 能区分 ?.!!?: 三个符号
  • [ ] 能写出 list.filter { it.age > 18 }.map { it.name }.sorted() 这种链式调用
  • [ ] 能解释 letapplyalso 三个作用域函数的差别和典型场景
  • [ ] 能写一段 runBlocking { launch { } } 启动协程
  • [ ] 知道 suspend 函数和普通函数的区别,能说出"suspend 不会阻塞线程"
  • [ ] 能用 Flow 写一段流式数据处理
  • [ ] 能独立完成第 10 章的 CLI 项目并加 1 个新功能

🎉 打满 10 个勾:恭喜,可以投 Kotlin 岗位简历了! 😅 不到 5 个勾:别气馁,回去把对应章节再走一遍。


下一站 → 第 1 章 · Kotlin 是什么 & 为什么学 →