1.变量定义必须初始化。且要么明确指明类型,要么必须直接赋值,否则编译不过

  1. var temp = 1
  2. var temp2: String 可以编译
  3. println(temp2) 编译失败,temp2未初始化

lateinit

告诉编译器 不要检查变量是否为空,在使用之前肯定会赋值的
避免一路代码时一路 ?传递
万一的真的为空,会触发异常

2.变量一开始智能推断为一个类型,再改就会类型转化失败

    var temp = "hello"
    temp = 3

3.常见数据类型
变量 - 图1

4.变量的getter和setter专属写法

    var name: String? = null
    get() {
        println ("call get name")
        return field
    }

    set(value) {
        println("call set name")
        field = value
    }