Kotlin语法更加自由,Java更模版化
空安全:
Type?
可空类型latainit
延迟初始化
延迟初始化
- 函数式编程:函数即对象,可以将函数作为方法的参数或返回值传递,结合lambda函数表达式,避免写接口
- 扩展函数:编译的时候会将函数转换为静态方法,并且第一个参数传入扩展对象本身,因此可以访问扩展对象,开发的时候阅读起来相当于扩展函数
inline
:编译的时候将方法体直接放到调用处,减少方法调用,压栈出栈的操作,提高可读性- 自动生成getter、setter
- 协程
- 不需要new,不需要分号
- 兼容Java
- if条件语句赋值
- kotlin不强制检查异常,Java需要捕获I/O异常等
var是变量、val是不可变量、const是常量
internal包内权限,类似java的default
kotlin的静态方法是通过创建一个内部伴生类Companion来调用的,使用反射调用静态方法会出问题。