-
Kotlin Nullableetc/코틀린_안드로이드 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) 공간에 생깁니다.
'etc > 코틀린_안드로이드' 카테고리의 다른 글
Kotlin Android Class (0) 2022.10.06 Kotlin if vs when 성능 비교 ? (0) 2022.09.29 Deep in to Kotlin(feat .android) (0) 2022.09.27 코틀린 자바 장단점 비교, Kotlin vs Java (1) 2022.09.25 [코틀린 강의 정리]_loop section (0) 2021.09.28