[Kotlin] Null을 허용한 변수 검사하는 방법

Kotlin
Kotlin

Null을 허용한 변수 검사

  • 코틀린의 변수 선언은 기본적으로 null을 허용하지 않는다.
    • val a: Int = 30
    • var b: String = “Hello”
  • Null 가능한 선언
    • val a: Int? = null
    • var b: String? = null
  • NPE (NPE, NullPointerException)
    • 사용할 수 없는 null인 변수에 접근하면서 발생하는 예외

Kotlin의 처리방법 비교

  • Kotlin에서는 기본적으로 NotNull이고 Nullable 표현에만 ‘?’가 사용된다.

세이프콜과 non-null 단정 기호 활용

  • 세이프 콜(Safe-call)
    • str1?.length
  • Non-null 단정 기호
    • str1!!.length

자료형 비교, 검사, 변환

  • 코틀린의 자료형 변환
    • 기본형을 사용하지 않고 참조형만 사용한다.
    • 서로 다른 자료형은 변환 과정을 거친 후 비교한다.
val a: Int = 1    // 정수형 변수 a를 선언하고 1을 할당한다
val b: Double = a    // 자료형 불일치 오류 발생
val c: Int = 1.1    // 자료형 불일치 오류 발생
  • 변환 메서드의 이용
val b: Double = a.toDouble()    // 변환 메서드 사용
  • 표현식에서 자료형의 자동 변환
val result = 1L + 3    // Long + Int -> result는 Long
  • 변환 메서드의 종류
    • toByte : Byte
    • toLong : Long
    • toShort : Short
    • toFloat : Float
    • toInt : Int
    • toDouble : Double
    • toChar : Char

기본형과 참조형 자료형의 비교 원리

  • 이중 등호(==)와 삼중 등호(===)의 사용
    • == : 값만 비교하는 경우
    • === : 값과 참조 주소를 비교할 때
val a: Int = 128
val b: Int = 128
println( a == b )    // true
println( a === b )    // true
  • 참조 주소가 달라지는 경우
val a: Int = 128    // 기본형
val b: Int? = 128    // 객체
println( a == b )    // true
println( a === b )    // false

스마트 캐스트

  • 구체적으로 명시되지 않은 자료형을 자동 변환
    • 값에 따라 자료형을 결정된다.
    • Number형은 숫자를 저장하기 위한 특수한 자료형으로 스마트 캐스트된다.
fun main() {
var test: Number = 12.2   // 12.2에 의해 test는 Float형으로 스마트 캐스트

test = 12   // Int형으로 스마트 캐스트

  test = 120L    // Long형으로 스마트 캐스트

  test += 12.0f    // Float형으로 스마트 캐스트
}

자료형 검사

  • Is 키워드를 사용한 검사
fun main() {
val num = 256

if( num is Int ) {    // num이 Int형일 때
print(num)
} else is ( num !is Int ) {    // num이 Int형이 아닐 때, !(num is Int)와 동일
print(“Not a Int”)
}
}

묵시적 변환

  • Any
    • 자료형이 정해지지 않은 경우
    • 모든 클래스의 뿌리 – Int나 String은 Any형의 자식 클래스이다.
    • Any는 언제든 필요한 자료형으로 자동 변환 (스마트 캐스트)

Leave a Comment