[Kotlin] 코틀린 기본 문법(Null Safety)

1 minute read


Null Safety

코틀린은 null 값의 처리에 많은 공을 들인 언어입니다. null은 프로그램 전체, 혹은 앱 전체를 멈출 수도 있기 때문에 아주 중요한 이슈입니다.

null로 인한 프로그램 다운 상황을 방지하기 위한 것이 Null Safety입니다.


null 값 허용하기: ?


코틀린에서 지정하는 기본 변수는 모두 null이 입력되지 않습니다. null을 입력하기 위해서는 변수를 선언할 때 타입 뒤에 ’?’ (Nullable, 물음표)를 입력해야 합니다.

변수에 null 허용 설정하기

var variable: String?


함수 파라미터에 null 허용 설정하기

안드로이드의 onCreate() 메서드의 Bundle 파라미터처럼 함수의 파라미터에도 null 허용 여부를 설정할 수 있습니다.

함수의 파라미터가 null을 허용한다면 해당 파라미터에 대해서 반드시 null 체크를 먼저 해야만 사용할 수 있습니다.

fun nullParameter(str: String?){
    if (str != null){ // null 체크를 먼저 해야합니다. 
        var length2 = str.length
    }
}


함수의 리턴 타입에 null 허용 설정하기

함수의 리턴 타입에도 물음표를 붙여서 null 허용 여부를 설정할 수 있습니다.

fun nullReturn(): String?{
    return null
}



안전한 호출: ?.


Nullable인 변수 다음에 ’?.’(Safe Call, 물음표와 온점)을 사용하면 해당 변수가 null일 경우 ?. 다음의 메서드나 프로퍼티를 호출하지 않습니다.

👍 예시

fun testSafeCall(str: String?):Int?{
    // str이 null이면 length를 체크하지 않고 null을 반환합니다. 
    var resultNull: Int? = str?.length
    return resultNull
}

만약 Safe Call을 사용하지 않았는데 str 변수가 null이라면 프로그램은 다움됩니다.



Null 값 대체하기: ?:


’?:’ (Elvis Operator, 물음표와 콜론) 을 사용하면 원본 변수가 null일 때 넘겨줄 기본 값을 설정할 수 있습니다.

👍 예시

fun testElvis(str: String?): Int{
    // length 오른쪽에 ?:을 사용하면 null일 경우 ?: 오른쪽의 값이 반환됩니다. 
    var resultNonNull: Int = str?.length?:0
}

str 변수가 null일 경우 ?: 오른쪽의 0을 반환합니다.



정리


  • 코틀린의 Null Safety 문법에는 Nullable(?), Safe Call(?.), Elvis operator(?:)가 있습니다.
  • Nullable
    • null을 입력받기 위해 사용합니다.
    • 사용 예: var nullable: 타입?
  • Safe Call
    • null일 때 ?. 다음에 나오는 속성이나 명령어를 처리하지 않습니다.
    • 사용 예: var result = 변수?.length 또는 변수?.프로퍼티?.something
  • Elvis Operator
    • null일 때 ?: 오른쪽의 값을 기본값으로 사용
    • 사용 예: var result = 변수?:0 또는 변수?.프로퍼티?:0



정리


Categories:

Updated:

Leave a comment