null 이라는 것은 어떠한 값도 존재하지 않는다는 뜻이다.
코틀린에서는 이러한 null 체크에 대한 방법들을 제공하고 null 가능성을 처리하는 것이 중요하다.
NullPointerException을 방지하기 위해서 코틀린에서는 애초에 일반적인 자료형은 null이 될 수가 없도록 되어있다.
null을 사용하기 위해서는 자료형 뒤에 물음표를 붙여야 한다.
fun plusTen(n:Int?):Int{
return n+10
}
위의 함수는 파라미터 값으로 null을 허용한 상태이다.
그런데 파라미터에 null을 허용한 경우 반드시 null 예외처리를 해줘야 한다.
위 함수를 작성해보면 null 예외 처리를 하지 않았기 때문에 에러가 발생한다.
아래와 같이 함수가 실행되자마자 바로 null 체크를 하고 그 다음에 함수 내용을 작성해야한다.
fun plusTen(n:Int?):Int{
if(n==null) return -1
return n+10
}
에러가 없이 작동하는 모습을 확인할 수 있다.
엘비스 연산자
코틀린에서는 null 값 처리를 위한 엘비스 연산자라는 일종의 조건문이 존재한다.
엘비스 연산자를 사용하면 간편하게 null 값을 처리할 수 있다.
위의 plusTen 함수를 엘비스 연산자를 사용하여 구현해보겠다.
fun plusTen(n:Int?):Int{
return n?.toInt()?:-1
}
?. 다음에 오는 것은 n이 null이 아닐때에만 실행이 되고 만약 n이 null일 경우 ?: 뒤에 오는 코드를 실행한다.
설명해보자면 n이 null이라면 -1을 반환하고 n이 null이 아닐때만 Int형으로 바꾸어서 반환하라
라는 뜻이 된다.
엘비스 연산자는 일종의 조건문이기 때문에 throw 같은 구문도 사용할 수 있다.
!!
코틀린에는 !! 연산자가 존재한다.
이것은 우리가 직접 null이 될 수 없다고 지정해주는 것이다.
코드를 짜다보면 변수의 null 가능성 여부를 체크하라는 에러가 뜰 때가 있다.
이럴 때는 엘비스 연산자를 사용하곤 하는데 우리는 그 값이 null이 될 수 없음을 알고 있다고 해보자.
그럴 경우 !!를 사용하여 이 값은 절대 null이 아니라고 알려줄 수 있다.
fun plusTen(n:Int?):Int{
return n!!.toInt()
}
위 함수의 return의 경우 n이 null이 될 수 없음을 알려주었기 때문에 에러가 발생하지 않는다.
그러나 이는 우리가 null이 아닌 값만 파라미터를 전달해주었을 때이고 실수로 null값을 파라미터로 전달해준다면 NullPointerException 에러가 발생한다.
정말 필요할 때에만 사용하는 것이 좋다.
'컴퓨터 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] try-catch문을 활용한 예외 처리 (finally) (0) | 2022.12.07 |
---|---|
[Kotlin] 내포된 반복문과 레이블 (0) | 2022.12.06 |
[Kotlin] 범위 표현의 방법과 in과 when과의 활용 (0) | 2022.11.19 |
[Kotlin] 조건문 사용법 및 한 줄 조건문 (0) | 2022.11.18 |
[Kotlin] 코틀린 함수 주의사항 및 오버로딩 (0) | 2022.11.17 |
댓글