Type을 다루는 방법

parkrootseok·2025년 7월 22일
0

코틀린

목록 보기
3/15
post-thumbnail

기본 타입

Kotlin은 Java와 동일하게 Byte, Short, Int, Long, Float, Double 등을 기본 타입으로 가지고 있습니다. 하지만, 크기의 대소에 따라 기본 타입간 형변환시 암묵적으로 수행할 수 있는 Java와 달리 Kotlin은 명시적으로 수행해야 합니다.

Java는 아래와 같이 크기가 더 작은 int(4Byte) 자료형을 더 큰 자료형인 long(8byte)으로 변환할 경우, 별도로 명시할 필요가 없습니다.

하지만, Kotlin에서 동일한 기능을 수행하기 위해선 아래와 같이 toXXX()를 활용해야합니다.

타입 캐스팅

Kotlin은 타입 캐스팅을 수행할 때 as, is 등을 사용합니다. Java에서 사용했던 instanceOf와 무엇이 다른지 한 번 살펴보겠습니다.

아래와 같이 타입 캐스팅을 수행하는 Java 코드가 있습니다.

이를 Kotlin으로 작성시 아래와 같습니다.

여기서 하나의 차이가 더 있습니다. Kotlin은 is 연산자를 통해 특정 클래스임을 확실히 할 경우, 별도의 형변환 없이 아래와 같이도 작성 가능합니다.

추가로, 아래와 같이 !is 연산자를 사용해 동일한 클래스가 아닌지 또한 쉽게 알 수 있습니다.

Kotlin의 3가지 특이한 타입

Any

Any 타입은 Java의 Object와 동일한 역할을 수행합니다. 즉, 모든 객체의 최상위 타입을 의미합니다. 즉, Kotlin에서는 Primitive Type과 Reference Type을 구분하지 않기에 두 Type의 최상위 타입은 Any 입니다.

Unit

Unit 타입은 Java의 void와 동일한 역할을 수행합니다. 한 가지 다른점이 있다면, Java의 void와 다르게 Unit은 그 자체로 타입 인자로 사용할 수 있습니다. Java의 경우 Generic 문법에서 void를 사용할 경우 Void 클래스를 사용해야 하지만, Unit은 그렇지 않습니다.

Nothing

Nothing 타입은 '함수가 정상적으로 끝나지 않았다'는 사실을 표현하는 역할을 수행합니다. 아래와 같이 무조건 예외를 반환하거나 무한 루프가 발생하는 함수에 명시합니다.

String Interpolation / String Indexing

String Interpolation

Kotlin은 문자열 내 변수를 삽입할 때 ${변수}를 사용해 수행할 수 있습니다. Java에서는 String.format() 또는 StringBuilder를 활용하기 때문에 가독성 측면에서 불편하다고 생각했는데, Kotlin으로 작성할 경우 다음 예시와 같이 보다 편하게 작성할 수 있습니다.

추가로, Kotlin의 경우 여러 줄에 걸친 문자열을 작성할 때 아래와 같이 """trimIndent()를 사용하면, StringBuilder를 활용하는 것 보다 쉽게 작성할 수 있 습니다.

String Indexing

Kotlin은 문자열에서 특정 문자를 가져올 때 배열처럼 가져오고 싶은 위치를 인덱스로 사용하여 가져올 수 있습니다. 즉, Java의 charAt(int index) 수행 결과와 Kotlin의 string[index]가 동일한 것을 의미합니다. 아래는 예시입니다.

profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글