본문 바로가기
Kotlin

Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:)

by 봄석 2019. 1. 3.

Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:)



null값이 아님을 보증(!!)

변수 뒤에 !!를 추가하면 nulll값이 아님을 보증하게 됩니다. 다음과 같이 null 값이 허용되는 name 변수의 경우 String? 타입이기 때문에 String 타입으로 변환하려면 !!값을 붙여서 null 값이 아님을 보증해야 합니다



val name: String?="키다리" 
val name2: String=name //에러
val name3: String?=name //OK

val name4: String=name!!//OK


안전한 호출 (?.)

메소드 호출 시 점(.) 연산자 대신 ?. 연산자를 사용하면 null 값이 아닌 경우에만 호출됩니다.

다음 코드는 str 변수의 값이 null이 아니라면 대문자로 변경하고 ,null 값이라면 null을 반환합니다.

val str:String?=null
 
var upperCase=if(str!=null) str else null //null

upperCase=str?.toUpperCase() //null


안전한 호출을 사용하면 복잡한 if문을 한줄로 줄일 수 있습니다.


엘비스 연산자 (?:)

안전한 호출 시 null이 아닌 기본값을 반환하고 싶을 때는 엘비스 연산자를 함께 사용합니다.

마지막 코드는 이제 null이 아닌 "require init" 라는 문자열을 반환합니다.

val str:String?= null
 
var upperCase=if(str!=null) str else null //null

upperCase =str?.toUpperCase()?:"require init" //require init



댓글