-
[Kotlin] NullProgramming/Kotlin 2020. 7. 15. 20:56
코틀린 변수 선언은 기본적으로 Null을 허용하지 않는다.
var a: Int = 30
var b: String = "Hello"
null 가능한 선언
val a: Int? = null
val b: String? = null
세이프 콜(?.)과 non-null 단정 기호(!!.)를 활용
- 세이프 콜 : null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 연산자로 사용할 변수 이름 뒤에 ?.를 작성하면 됨.
- println("str1: $str1 length: ${str1?.length}") // str1을 세이프 콜로 안전하게 호출
- non-null 단정기호는 null이 아님을 단정하므로 컴파일러가 null검사 없이 무시한다.
- 따라서 null이 할 당되어 있을지라도 컴파일은 잘 진행되지만, 실행중에는 NPE를 발생시킨다.
- 따라서 되도록이면 사용하지 않는 것이 좋다.
세이프 콜과 엘비스 연산자를 활용해 null을 허용한 변수 더 안전하게 사용하기
- null을 허용한 변수를 조금 더 안전하고 간단하게 사용하려면 세이프 콜 ?.와 엘비스(Elvis) 연산자 ?:를 함께 사용하면 됩니다. 엘비스 연산자는 변수가 null인지 아닌지 검사하여 null이 아니라면 왼쪽의 식을 그대로 실행하고 null이라면 오른쪽의 식을 실행합니다.
fun main() { var str1 : String? = "Hello Kotlin" str1 = null println("str1: $str1 length: $str1?.length ?: -1}") //세이프 콜과 엘비스 연산자를 활용 // str1이 null인지 체크하고, null이라면 -1을 리턴한다. }
Kolin 에서는 기본적으로 NotNull이고, Nullable 표현에만 ? 가 사용된다.
'Programming > Kotlin' 카테고리의 다른 글
코틀린 함수 관련 개념 (1) 2022.05.11 About Kotlin (0) 2020.11.05 [Kotiln] 범위 지정 함수 - let,apply,with,run (0) 2020.10.28 [Kotlin] 접근제한자 (0) 2020.07.31 [Kotlin] 자료형과 변수 (0) 2020.07.15