kotlin의 변수 선언으로는 두 가지 종류가 있다.
1. val a : Int = 1
2. var b : Int = 2
val -> 값 변경 불가, final과 같은 효과
var -> 값 변경 가능, 일반 변수 선언과 유사
kotlin은 NULL 허용하지 않음.
따라서 변수 선언과 동시에 초기화가 무조건 필요하다.
그렇다면, 초기화를 미루고 싶을 때는 ? -> "lateinit" 이용
private lateinit var a : String
lateinit 의 조건
그렇다면, 기초 타입( = Int )일 때 초기화를 미루는 방법은? -> "Delegates" 이용
private var b by Delegates.notNull<Int>()
Type? : null 가능한 타입, null이 아닐 때 처리
var case1 : Int? = null
case2의 값을 case1로 지정, case1이 null일 경우, 우항의 값 3을 default로 지정
var case2 : Int = case1 ?: 3
Nullable Type에 !! 를 추가하게 되면 강제로 notNull 타입으로 처리 가능
fun main() {
var s : String? = null
s = "song"
val name : String = s!!
}