본문 바로가기
프로그래밍/Kotlin

[Kotlin] lateinit, by lazy 차이점

by Youngs_ 2021. 6. 28.

아래 코드는 lateinit의 사용법이다.

fun main() {
    lateinit var x : String
    x = "Initialized"
    println(x)
}

아래 코드는 by lazy의 사용법이다.

fun main() {
    lateinit var inputValue : String
    val x : Int by lazy { inputValue.length }
    inputValue = "Initialized!"
    println(x)
}

 

lateinit과 by lazy는 나중에 초기화 한다는 점은 같지만 lateinit은 var로만, by lazy는 val로만 선언된다는점이 다르다.

또한 by lazy는 초기화에 필요한 코드를 괄호{} 안에 해놓으면 다음에 해당 변수를 사용할때 괄호에 적어놓은 코드대로 호출시점에 최초 1회 초기화가 된다.

둘다 변수 선언시 null로 초기화 할 필요가 없으므로 메모리상 이득을 볼 수 있기 때문에 사용한다.

댓글