본문 바로가기
안드로이드 프로그래밍/문법정리

[kotlin] 초기화 지연(lazy initialization)

by 1chanhue1 2023. 8. 14.

 

초기화 지연을 사용하는 이유 ? 

 

보통 클래스에서 변수를 초기화하면, 클래스 생성 시 해당 변수도 함께 생성되며 초기화된다. 그렇게 되면 클래스 객체를 생성할 때마다 해당 변수도 함께 초기화되기 때문에 바로 사용할 수 있다는 장점이 있다.

하지만 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면 클래스를 생성할 때마다 변수를 초기화하기 때문에 메모리나 소프트웨어의 실행 시간 측면에서 손해를 많이 보게 될 것이다.

정리하면 지연 초기화는 해당 변수가 필요한 순간까지 초기화를 최대한 미루어서 메모리나 실행 시간에서 이득을 보기 위해 사용한다.

 

lateinit var text:String // 타입을 반드시 지정해줘야함


val test : Int by lazy{     // lateinit var와 달리 선언을 할 때 초기화가 되어있어야함
    println("초기화중입니다.")
    100 // 마지막줄 return
}


fun main(){


    text="안녕하세요"  // lateinit var는 선언 후 나중에 초기화가 가능
    
    println("메인함수 실행")
    println("초기화 한 값 :$test")  // test 초기화
    println("두번째 출력 :$test")

    // 출력결과
    // 메인함수 실행
    // 초기화중입니다.
    // 초기화 한 값 :100
    // 두번째 출력 :100



}