Java/Kotlin 基础知识体系概览
概述
Android 开发的语言基础已从 Java 全面转向 Kotlin First。Google 在 2019 年宣布 Kotlin 为 Android 首选语言,目前超过 95% 的 Top 1000 应用使用 Kotlin。掌握 Kotlin 的核心特性和与 Java 的互操作是 Android 开发者的基本功。
核心知识点
为什么选择 Kotlin?
| 特性 | Java | Kotlin |
|---|---|---|
| 空安全 | 运行时 NPE | 编译时检查 |
| 数据类 | 手写 getter/setter/equals/hashCode | data class 一行搞定 |
| 扩展函数 | 不支持 | 原生支持 |
| 协程 | Thread / ExecutorService | 轻量级协程 |
| 函数式编程 | Lambda(Java 8+) | 一等公民 |
| 代码量 | 多 | 减少约 40% |
| 互操作性 | — | 100% 兼容 Java |
知识体系结构
1. Kotlin 基础语法
变量声明(val/var)、数据类型、控制流(when/if 表达式)、函数定义、空安全(?.、!!、?:)、类型推断、字符串模板——这些是写 Kotlin 的第一步。
2. Kotlin 面向对象
data class、sealed class、enum class、object 单例、伴生对象(companion object)、抽象类与接口——Kotlin 的 OOP 比 Java 更简洁但同样强大。
3. 函数式编程
高阶函数、Lambda 表达式、内联函数(inline)、扩展函数、作用域函数(let/run/with/apply/also)——函数式编程能力是 Kotlin 的核心优势之一。
4. 集合操作
List/Set/Map 的不可变与可变版本、filter/map/flatMap 等操作符、Sequence 惰性序列、集合变换链——这是日常开发中最高频使用的 API。
5. 协程基础
suspend 函数、CoroutineScope、launch/async、结构化并发(Structured Concurrency)——协程是 Android 异步编程的标准方案,取代了 AsyncTask 和 RxJava 的大部分使用场景。
6. 泛型
泛型类/函数、in/out 协变逆变(对应 Java 的 ? extends / ? super)、reified 内联类型参数、类型擦除——泛型是理解框架源码的基础。
7. 委托
属性委托(by lazy、observable、vetoable)、自定义委托、类委托(by 接口实现委托)——委托模式在 Android 中广泛使用(ViewModel、SharedPreferences 等)。
8. Kotlin DSL
DSL 构建原理、带接收者的 Lambda(T.() -> Unit)、Gradle Kotlin DSL——理解 DSL 有助于写出更 Kotlin-idiomatic 的代码。
9. Java 与 Kotlin 互操作
@JvmStatic、@JvmField、@JvmOverloads、SAM 转换、空安全桥接——实际项目中经常需要混用 Java 和 Kotlin 代码。
学习路径
Android 面试中 Kotlin 基础高频考点:
- val vs var、空安全机制
- data class vs 普通类的区别
- 作用域函数(let/run/with/apply/also)的区别与使用场景
- 协程 vs 线程的区别
- sealed class 的应用场景
- 扩展函数的原理(编译后是什么)