안드로이드/코틀린 개념

[코틀린 / Kotlin] 코틀린 개념 정리 4 - 자료형 변환

감자 바보 2022. 6. 7. 14:44
반응형

코틀린 개념 정리 4 - 자료형 변환

 이번 게시글에서는 코틀린에서의 자료형 변환에 대한 기본 개념을 정리할 것이다.

 

자료형 변환

 코틀린에서는 자료형이 다른 변수에 재할당하면 자료형 불일치 오류(Type mismatch)가 발생한다. 자료형이 다른 변수에 값을 재할당하고 싶을 경우 자료형 변환 메서드를 사용해야 한다. 자료형 변환 메서드는 to + 자료형으로 구성되어 있다. 

 

 ex) toByte, toString, toInt

 

이중 등호(==)와 삼중 등호(===)의 차이

 이중 등호(==)는 단순히 값만 비교할 때 사용되며 삼중등호(===)는변수의 참조 주소값을 비교한다. 

 

 Int, Long, Short 같은 참조형 자료형 일부의 non-null 변수는 같은 값을 저장할 경우 스택에 저장된 같은 값을 가르켜 참조 주소 값이 같을 수 있지만, nullable 변수는 같은 값을 저장하더라도 힙에 저장된 다른 주소를 가르키므로 참조 주소값이 같지 않다. 

 

1. 코드 예시

fun main() {
    val a: Int? = 128
    val b: Int? = 128
    var c: Int = 128
    val d: Int? = a
    var e = 128
    println("a === b : ${a === b}")
    println("a == b : ${a == b}")
    println("a === c : ${a === c}")
    println("a == c : ${a == c}")
    println("a === d : ${a === d}")
    println("a == d : ${a == d}")
    println("c === e : ${c === e}")
    println("c == e : ${e == c}")
}

위 코드의 실행 결과

 하지만 코틀린에서 참조형으로 선언한 변수 값이 (-128 ~ 127) 범위에 있을 경우 캐시에 그 값을 저장하여 nullable 변수라도 참조 값이 일치한다.

fun main() {
    val a: Int? = 127
    val b: Int? = 127
    var c: Int = 127
    val d: Int? = a
    var e = 128
    println("a === b : ${a === b}")
    println("a == b : ${a == b}")
    println("a === c : ${a === c}")
    println("a == c : ${a == c}")
    println("a === d : ${a === d}")
    println("a == d : ${a == d}")
    println("c === e : ${c === e}")
    println("c == e : ${e == c}")
}

 

Number 자료형을 사용한 숫자 자료형의 스마트 캐스트

  Int, Float Long 등 숫자 자료형의 경우 Number 자료형을 사용하면 변수에 저장되는 값에 따라 자동으로 형변환 된다. 

 

is 키워드를 사용한 자료형 검사

 is 키워드를 사용하면 변수의 자료형을 검사할 수 있다.

 

변수 is 자료형 

 

 ex) if (num is Int) => num이 Int 형일 경우 true 아닐 경우 false

 

Any를 사용한 묵시적 변환

 Any는 모든 클래스의 뿌리이다. 모든 기본 자료형은 Any의 자식 클래스이다. 

 Any는 언제든 필요한 자료형으로 자동 변환된다. (스마트 캐스트)

 

참고

1. 위키백과 - 코틀린, 코틀린 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

코틀린 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전

코틀린(Kotlin)은 JVM에서 동작하는 크로스 플랫폼 오픈소스 프로그래밍 언어이다. 2011년 7월, 젯브레인사가 공개하였다. 파일 확장자는 .kt 또는 .kts를 사용한다. 코틀린은 2019년 5월 7일 이후로 구

ko.wikipedia.org

2. boostcourse - 코틀린 프로그래밍 기본 1 강의 (강사 : 황영덕), 코틀린 프로그래밍 기본 1 > 2-1 기본 자료형과 변수 선언방법 (1) 불변형, 기본형 : 부스트코스 (boostcourse.org)

 

코틀린 프로그래밍 기본 1

부스트코스 무료 강의

www.boostcourse.org

3. 코틀린 공식 사이트 - Basic syntax | Kotlin (kotlinlang.org)

 

Basic syntax | Kotlin

 

kotlinlang.org