0.kotlin 中文网—语法
    http://www.kotlincn.net/docs/reference/java-to-kotlin-interop.html

    1.const val 和val区别
    const val
    只能在Top-level,object和companion object的成员中声明
    只允许String或者原始属性初始化
    不能自定义get()
    区别:
    const val Str被public final static修饰,
    valStr被private final static修饰。
    并且valStr的值是通过getValStr()去获取的,
    const修饰的constStr是直接获取的,所以就常量而言为了提升效率最好用const修饰

    2.@JvmStatic 和 @JvmField 在kotlin中的使用

    @JvmField消除了变量的getter与setter方法 @JvmField修饰的变量不能是private属性的 @JvmStatic只能在object类或者伴生对象companion object中使用,而@JvmField没有这些限制 @JvmStatic一般用于修饰方法,使方法变成真正的静态方法;如果修饰变量不会消除变量的getter与setter方法,但会使getter与setter方法和变量都变成静态

    https://blog.csdn.net/BossDarcy/article/details/106545470

    3.kotlin 单例 本生object xxx{} 饿汉式单例
    https://www.jianshu.com/p/5797b3d0ebd0

    4.object和compain object 区别
    object 表达式(匿名内部类) 不能定义构造函数 和声明(表示单例类)
    compain object 不能脱离类,访问class.Compain.xxx
    https://www.jianshu.com/p/a8d1877143b2

    5.Kotlin lateinit 和 by lazy
    https://www.jianshu.com/p/e2cb4c65d4ff
    lateinit 只用于变量 var,而 lazy 只用于常量 val
    lazy后接{lamada表达式}返回T,调用一次,后续调用只显示记录

    lateinit 生命周期中获取或初始化变量,类似Android onCreate()