ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin Nullable
    etc/코틀린_안드로이드 2022. 9. 29. 19:00

    Kotlin 스터디를 하면서 깊게 파기 시작하면서 자바의 관한 지식도 같이 오르고 있다. 

    내부적 차이점을 아직 비교하기는 어려운데 컴파일러를 뜯어 보지 않는 이상은 어려울 듯 하다. 

     

    Kotllin 은 Nullable 이라는 좋은 놈이 있다 왜냐?

    코드를 보자 

    Null able 이 없던 시절 코드이다

    val nullableName2: String = "Denis"
    
    if(nullableName2 != null) {
                println("Hello, ${nullableName2.toLowerCase()}.")
                println("Your name is ${nullableName2.length} characters long.")
            } else {
                println("Hello, Guest")
            }

    null check 을 빈번히 if 문이나 exception을 걸었던 이전의 코드에서는 데이터의 존재 유무를 보기 위하여 상단의 코드를 사용했다

     

    근데 우리는 Nullale 을 사용하면 , 다음 과 같은 코드를 쓴다. ? 하나의 많은 코드 가 줄고 이는 메모리를 효울적으로 사용 하거나 개발의 생산성을 높이는 길이 된다. 

     

    val nullableName2: String? = "Denis"

     

    Kotlin let 을 이용한 검사 방법 ,  T?.let{} 형태의 let의 블럭 안에는  non-null 만 들어 올 수 있다. 

    elvis operator 와 같이 사용이 가능하다 .

    val nullableName4: String? = null
    nullableName4?.let { println(it.length) } /// 출력 결과는 없다.
    
    
    
    val nullableName5: String? = "Denis"
    nullableName5?.let { println(it.length) } /// 출력 결과 : 5
    
    
    // 객체 선언시 기본값을 지정해 줄 수 있다. 
    val nameStr = person?.let { it.name } ?: "Defalut name"

     

     

    val nullableName5: String? = null
    nullableName5!!.toLowerCase() // Results in NullPointerException
    
    
    
    
    val nullableName5: String? = "TOM"
    print(nullableName5!!.lowercase())

     

     

     

     코틀린에서 자료형(Data Type)을 선언하기 위해 Int, Long 등의 자료형은 null 할당이 허용되지 않으며 컴파일 후 기본형 혹은 원시형(Primitive Type)으로 변환되 JVM에서 실행 된다.

     

    => Int?, Long?는 기본형으로 변환되지 않습니다. 객체가 힙(Heap) 공간에 생깁니다.

     

     

     

     

Designed by Tistory.