7.1.1 与 Java 的比较
2 分钟阅读
7.1.1 与 Java 的比较
Kotlin 解决了 Java 的一些问题
Kotlin 修复了 Java 存在的一系列问题:
- 空引用由类型系统控制。
- 没有原始类型
- Kotlin 中的数组是不变的
- Kotlin 有真正的函数类型,而不是 Java 的 SAM 转换
- 使用处型变无需通配符
- Kotlin 没有受检异常
- 为只读集合和可变集合提供各自的接口
Java 有而 Kotlin 没有的特性
- 受检异常
- 不是类的基本类型。字节码会尽可能使用基本类型,但它们不能显式使用。
- 静态成员被替换为伴生对象、顶层函数、扩展函数或 @JvmStatic。
- 通配符类型被替换为声明处型变和类型投影。
- 三元运算符
a ? b : c被替换为 if 表达式。 - 记录类型(Records)
- 包级私有的可见性修饰符
注意: Kotlin 没有模式匹配,但 Kotlin 中的智能转换提供了与 Java 中的模式匹配类似的功能。可以在官方的 Kotlin by JetBrains 频道视频中了解更多。
Kotlin 有而 Java 没有的特性
- Lambda 表达式 + 内联函数 = 高性能的自定义控制结构
- 扩展函数
- 空安全
- 字符串模板
- 属性
- 主构造函数
- 第一类委托
- 变量和属性类型的类型推断(Java 10:局部变量类型推断)
- 单例
- 声明处型变与类型投影
- 区间表达式
- 运算符重载
- 伴生对象
- 数据类
- 协程
- 顶层函数
- 带默认值的参数
- 命名参数
- 中缀函数
- expect 与 actual 声明
- 显式 API 模式以及对 API 表面更好的控制
注意: Java 没有智能转换,但模式匹配提供了与 Kotlin 中的智能转换类似的功能。可以在官方的 Kotlin by JetBrains 频道视频中了解更多。
接下来学什么?
了解如何:
- 在 Java 和 Kotlin 中完成字符串的常见任务。
- 在 Java 和 Kotlin 中完成集合的常见任务。
- 在 Java 和 Kotlin 中处理可空性。