val 和 var 修饰变量必须要在声明的时候初始化。 val 修饰的是不可变的变量,相当于java的final修饰的变量. var 修饰的是可变化的变量. lateinit 修饰的变量初始化时机自由决定,但是不注意的话容易报空指针异常。