要想了解一个新事物,将它与所熟悉的就实物做对比是最好不过的方式了,下文为 Kotlin 官方网站的一篇文章,对 Java 和 Kotlin 做了对比。我根据自己的理解添加了一点解释。原文对每一条都有链接让你去深入了解,很好!!
Java 有, Kotlin 没有的:
- checked 异常(一个方法在声明抛出异常后,使用它的方法必须使用 try 捕获或者声明抛出)
 - 基本类型,它们不是类
 - 静态方法,属于类的方法
 - 非私有 Feild(Java 的类包含数据和方法,数据被称为 Feild,可以直接在外部访问非私有的Feild)
 - 泛型里的通配符(类似这种的 Collection<? extends E> 或者这样 List<? super String>)
 
Kotlin 有, Java 没有的:
- lambda表达式 和 内联函数(能够提高性能)
 - 扩展函数
 - Null 安全(变量区分可Null 和 可不Null)
 - 智能转换
 - String 模板(类似这样的 println(“hello $Name”))
 - 属性(准确的说,Java里面的类的数据叫 Feild)
 - 基本构造器(类似这样的 class Persion(name: String) {} 这里的小括号是基本构造器)
 - 支持代理模式,不需要写多余的代码(类似这样的 class Proxy(impl: Base): Base by impl)
 - 变量和属性的类型推断 (val a = 5, 可以推断出 a 的类型是 Integer,并不是动态类型)
 - 支持单例模式 (类似这样的 object Global {})
 - 类型参数(类似 Java 的反省)
 - 区间表达式 (类似这样的 1..5 == [1, 2, 3, 4, 5])
 - 操作符重载 (可以重新定义 + - 等等)
 - 伙伴对象 (Companion Object, 可以用来实现静态变量,静态方法)
 - 数据类 (类似这样 data class Persion(name: String) {} 就是在正常的类之前加了个 data Kotlin 会给太生成一些方法)
 - 区分了可变集合和不可变集合
 - 协程 (不是说走就走的那个携程)