[Kotlin] Nullability 코틀린에서의 null
by Yena Choi
Study Note
Nullability
코틀린에서는 변수 선언과 동시에 값을 초기화해야 한다. 하지만, 아무데나 = null
값을 지정할 수 없다.
var name : String = "Nachoi"
name = null // 이렇게 null을 지정할 수 **없다!**
null값으로 지정하고 싶으면 자료형 뒤에 ?
를 붙인다.
var name : String? = "Nachoi"
name = null // 가능
자료형만 우선 지정하고, 나중에 초기화하려면 lateinit
을 사용한다. 단, language version 1.2 부터 사용 가능하다.
lateinit var phoneNumber : String
phoneNumber = "01098765432"
Null 여부 확인
null 상태에서 메소드를 호출하면 NullPointerException
위험 있으므로 , 체크!
if
문으로 체크var length = 0 if (name != null) { length = name.length } else { length = -1 } // 혹은, 아래와 같이 한줄로 가능. var length = if (name != null) name.length else -1
- Safe Call Operator
?
println(name?.length) // null일 경우 null 출력. 변수명 뒤에 `?` 를 붙일 수 있다!
- Elvis Operator
?:
var length = name?.length ?: -1 // `?:` 를 붙여서 오류 상황에 대한 default값 지정.
- force (
!!
)
변수 안의 값에 상관없이 메소드 실행. 따라서 오류가 날 수 있으니, 100% 확실한 상황에서만 사용.println(name!!.length) //null일 경우 오류