널 안정성
널(null)이란 객체가 선언되었지만 초기화되지 않은 상태, 주소를 가지지 못한 상태를 의미합니다.
val data1: String = "hello"
/*
"hello"라는 문자열 데이터가 저장된 주소가
대입되며 그주소로 문자열 데이터를 이용합니다
*/
val data2: String? = null
/*
변수가 선언되었지만 이용할 수 없는 상태
*/
널인 상태의 객체를 이용하면 널 포인트 예외가 발생합니다.
널 안정성이란 널 포인트 예외가 발생하지 않도록 코드를 작성하는 것을 말합니다.
fun main(){
var data : String? = null
val length = if(data == null){
0
} else{
data.length
}
println("data.length:$length")
}
널 안정성을 고려한 방법 1 - if문을 통하여 일일이 확인을 하여 안정성을 학보 한 경우
fun main(){
var data : String? = null
val length = data?.length?:0
println("data.length:$length")
}
널 안정성을 고려한 방법 2 - 널 안전성 호출 연산자인 "?."로 data가 null인지 확인을 합니다. null이 아닐 경우 멤버에 접근을 할 수 있지만 null일 경우 일반적으로 null을 자동적으로 반환합니다. 그렇지만 "?."이라는 엘비스 연산자로 변수가 null이기 때문에 다음 구문인 0을 반환하게 됩니다.
fun main(){
var data1 : String? = "test"
println(data1!!.length) //4
var data2 : String? = null
//println(data2.length)
println(data2!!.length)
}
널 예외를 발생시켜야 할 때 "!!"연산자를 사용하여 예외 메시지를 출력시킵니다