코틀린은 Java와 달리 변수를 선언할 때 기본값으로 자동 초기화하지 않습니다. boolean 변수가 자동으로 false로, int 변수가 자동으로 0으로 초기화되지 않죠.
변수를 선언할 때 명시적인 초기화를 요구하여 NullPointerException과 같은 오류를 방지하고 코드의 안정성을 높이기 때문이죠.
그래서 코틀린에서 변수를 선언할 때 반드시 명시적으로 초기화해야 합니다.
물론 lateinit이나 by lazy와 같은 기능을 통해 초기화 시점을 조절할 수 있습니다.
var myBoolean: Boolean // 컴파일 에러! 초기화가 필요함
var myInt: Int // 컴파일 에러! 초기화가 필요함
var myBoolean: Boolean = false // 명시적 초기화
var myInt: Int = 0 // 명시적 초기화
lateinit var myLateinitString: String // lateinit으로 선언, 나중에 초기화
val myLazyValue: String by lazy {
// 처음 사용될 때 초기화됨
"Hello"
}
변수나 상수의 값을 나중에 초기화할 수 있습니다.
클래스를 설계할 때 초기의 값을 정의하기 난처해서 나중에 대입하기 위한 문법입니다.
코틀린은 클래스를 설계할 때 안정성을 위해 반드시 변수의 값을 초기화할것을 권장합니다.
코틀린은 지연초기화 또는 늦은초기화를 위해 lateinit, lazy 키워드를 활용합니다.
fun main(){
var s1 = Student()
s1.name = "참새"
s1.displayInfo()
s1.age = 10
s1.displayInfo()
}
class Student {
lateinit var name:String
var age:Int = 0
fun displayInfo() {
println("이름은: ${name} 입니다.")
println("나이는: ${age} 입니다.")
}
}