1、惰性加载
fun main(args: Array<String>) {
println(name2)
println(name2)
}
//类加载的时候就初始化了
val name1:String="李四"
//这种写法更优,需要用到的时候才会初始化,并且只初始化一次
val name2:String by lazy {
println("初始化")
"张三"
}
输出:
by lazy必须是val修饰(var不行),返回值是最后一行、线程安全
2、延迟加载
fun main(args: Array<String>) {
var person=Person()
println(person.name1)
}
class Person{
//必须初始化
var name2:String=""
//可以不用初始化,但是在使用的时候必须初始化,否则报错
lateinit var name1:String
}
输出:
修改:
fun main(args: Array<String>) {
var person=Person()
person.name1="张三"
println(person.name1)
}
class Person{
//必须初始化
var name2:String=""
//可以不用初始化,但是在使用的时候必须初始化,否则报错
lateinit var name1:String
}
输出: