Programming Language/Kotlin

[Kotlin] 코틀린 데이터 타입 형변환

개발왕 금골드 2020. 7. 11. 23:47
반응형

안녕하세요 골드입니다.

오늘은 코틀린에서 기본 자료형들(String도 포함하여)의 형변환에 대해서 알아보겠습니다.

 

 

1. 문자열(String)을 숫자 타입으로 형변환

문자열을 숫자 타입으로 형변환 하겠습니다.

흔히 사용하는 숫자 타입으로 Int, Long, Double 같은 데이터 타입이 있습니다.

코틀린은에서 형변환은 매우매우 간단합니다.

 

toFloat

toDouble

toDoubleOrNull

toInt

toIntOrNull

toLong

 

같은 함수들을 코틀린에서 제공합니다. 보시다시피 원하는 데이터 타입 앞에 to를 붙여서 사용하면 됩니다.

 String형 변수 str에 "100"을 저장하고 Int형 변수 number는 초기화를 하지 않았기 때문에 Int라고 알려주기만 했습니다. 이후에 str.toInt()를 사용하여 str 변수에 저장된 값을 Int로 형변환한 후 number 변수에 저장하는 코드입니다.

(만약 이와 같은 코드를 사용할때, number의 값이 자주 바뀐다면 val이 아닌 var라고 선언해야 합니다.)

 

 만약 다른 언어를 사용한 경험이 있고 코틀린을 처음 접하는 분이라면 다른 건 다 이해가 금방 되지만, 딱 하나 toDoubleOrNull()이라는 함수가 낯설게 느껴질 것입니다. 이 함수는 코틀린의 Null 안정성을 보여주는 함수라고 보시면 됩니다. 직관적인 네이밍 덕분에 Double 아니면 Null이라고 쉽게 생각할 수 있습니다. 그게 맞습니다.

 toDoubleOrNull()과 같은 유형의 함수는 숫자를 알맞는 값으로 변환할 수 없을 때, 예외를 발생시키지 않고 null 값을 반환하는 함수입니다. (프로그래머 입장에서 아주 편안한 그런 함수입니다.) 이 함수는 코틀린의 null 복합 연산자(?)와 함께 쓰이면서 빛을 보게 됩니다. 

위에서 봤던 이미지의 코드를 조금 수정했습니다. 

 똑같이 number 변수에 str변수를 Int로 형변환한 값을 저장하는 것은 맞습니다. 그런데 여기서 한 가지 추가된 점은 만약 str에 숫자로 바꿀 수 없는 값이 저장되어 있다면 number에 값을 할당하는 저 순간 예외가 발생하게 될 것입니다. 그러나 toIntOrNull()을 사용했기 때문에 예외가 발생하지 않고 number는 null값을 반환하게 됩니다. 

 단순히 toIntOrNull()만 사용했다면 number는 null을 반환하지만 ?: 연산자와 같이 사용했습니다. ?: 연산자는 변수에 값을 확인하여 null이 아니면 ?: 앞에 코드를, null이면 ?: 뒤에 값을 변수에 대입합니다. (삼항 연산자와 비슷합니다.) 그렇기 때문에 만약 str.toIntOrNull()로 변환한 값이 null이면 ?: 뒤에 0을 변수 number에 대입하게 되는 것입니다.

 

 

2. 숫자 타입들의 형변환

이번엔 서로 다른 숫자 타입들의 형변환입니다.

위에서 봤던 함수들을 그대로 사용할 수 있습니다. 그러나 한 가지 더 말씀드리자면

위에서 봤던 toDouble() 함수를 사용하는 방법도 있고, Int형에서 Double형으로 변환할 경우 Int형 변수 값과 Double형 변수가 연산을 하면 Double형으로 저장된다는 점도 알아두시기 바랍니다.

 

 

 

3. 숫자 타입에서 문자열(String)으로 형변환

 앞서 문자열을 숫자 타입으로 형변환하는 방법에 대해 보셨다면 아마 머릿속에 하나의 함수가 떠오르셨을 것입니다. 바로 toString() 함수입니다. 다양한 언어에서 String으로 형변환을 하기 위해 사용하는 함수이기 때문에 이미 많이들 알고 계실 것입니다.

toString()

마찬가지로 하나 더 예를 들자면 number 변수 앞에 "" 빈 문자열을 더하면 String값으로 변환할 수 있습니다.

 

 

 

여기까지 골드였습니다.

감사합니다.

 

참고자료 : Kotlin api

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/

 

String - Kotlin Programming Language

 

kotlinlang.org

 

반응형