Kotlin 기본 문법 - 지연 초기화
2024. 6. 10. 10:18ㆍ[Android] Kotlin 기본 문법
# 지연초기화의 개념
- 코틀린은 클래스를 설계할 때 안정성을 위해 반드시 변수의 값을 초기화할 것을 권장함
- 하지만, 클래스 설계 시 초기에 값을 정의하기 난처한 경우 나중에 값을 대입하기 위한 문법
- 지연초기화를 위해 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} 입니다.")
}
}
'[Android] 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 |