Kotlin 기본 문법 - 지연 초기화

2024. 6. 10. 10:18Kotlin 기본 문법 정리

# 지연초기화의 개념

- 코틀린은 클래스를 설계할 때 안정성을 위해 반드시 변수의 값을 초기화할 것을 권장함

- 하지만, 클래스 설계 시 초기에 값을 정의하기 난처한 경우 나중에 값을 대입하기 위한 문법

- 지연초기화를 위해 lateinit, lazy 키워드 사용

- 저사양 환경에서 효율적으로 메모리 사용 가능

 

# 변수의 지연초기화

fun main(){
    var s1 = Student()
    s1.name = "참새"
    s1.displayInfo()

    s1.age = 10
    s1.displayInfo()
}

class Student {
	// name 변수를 나중에 정의하기 위해 lateinit 사용
    lateinit var name:String
    var age:Int = 0

    fun displayInfo() {
        println("이름은: ${name} 입니다.")
        println("나이는: ${age} 입니다.")
    }
}

 

※ 변수 사용 전에 초기화 여부를 확인해야 안정성을 높일 수 있음

※ isinitialized를 활용해 값의 초기화 여부를 확인(true/false 출력)

※ 사용 시 값이 아닌 참조 형태로 사용해야 하기 때문에 this:: 혹은 :: 를 붙임 

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() {
    	// true일 때 코드 실행, false일 때 else
		if(this::name.isInitialized) {
	        println("이름은: ${name} 입니다.")
	        println("나이는: ${age} 입니다.")
				} else {
					println("name변수를 초기화해주세요.")
				}
    }
}

 

# 상수의 지연초기화

- 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
    val address: String by lazy {
        println("address 초기화")
        "seoul"
    }

    fun displayInfo() {
        println("이름은: ${name} 입니다.")
        println("나이는: ${age} 입니다.")
        println("주소는: ${address} 입니다.")
    }
}

'Kotlin 기본 문법 정리' 카테고리의 다른 글

Kotlin 기본 문법 - 배열  (1) 2024.06.10
Kotlin 기본 문법 - 널 세이프티  (0) 2024.06.10
Kotlin 기본 문법 - 예외처리  (0) 2024.06.10
Kotlin 기본 문법 - 접근제한자  (0) 2024.06.10
#2. 변수  (1) 2024.06.07