타입 개요
타입 개요
Kotlin을 처음 접하면 "이 타입은 값인가 객체인가?" 헷갈릴 때가 있어요. 결론부터 말하면 Kotlin에서는 모든 것이 객체처럼 취급돼요. 다만 내부적으로는 일부 타입이 원시 값으로 최적화되어 동작하죠. 어떤 타입들이 있는지, 그리고 코드에 직접 쓸 수 없는 타입은 왜 존재하는지 함께 살펴볼게요.
출처: Kotlin 공식 문서
본문
Kotlin에서 모든 것은 객체예요. 어떤 변수든 멤버 함수와 속성을 호출할 수 있다는 의미죠. 숫자, 문자, 불리언 같은 일부 타입은 런타임에 원시 값으로 최적화된 내부 표현을 갖지만, 여러분 눈에는 일반 클래스처럼 보이고 동작해요.
이 섹션에서는 Kotlin에서 쓰는 기본 타입을 다룹니다.
- 숫자와 그 부호 없는(unsigned) 대응 타입
- 불리언
- 문자
- 문자열
- 배열
Nothing, Any, Unit 같은 다른 Kotlin 타입을 배우려면 Kotlin API 레퍼런스를 살펴보세요.
AnyNothingUnit
Kotlin에는 **표기 불가 타입(non-denotable types)**도 존재해요. 이 타입들은 Kotlin 코드에 직접 쓸 수 없는 타입인데요, 대신 컴파일러가 다른 언어와의 상호 운용(interoperability) 같은 목적으로 내부에서 사용해요. Kotlin은 소스 문법이 허용하는 것보다 더 정밀한 타입 정보를 표현하기 위해 표기 불가 타입을 만들어 내죠.
표기 불가 타입을 직접 선언할 수는 없지만, 컴파일러 진단 메시지, IDE 툴팁, 추론된 타입 표시에서 만날 수 있어요. 표기 불가 타입에 대해 더 알고 싶다면 다음을 참고하세요.
- 플랫폼 타입 (Platform types)
- 교차 타입 (Intersection types)
- 정수 리터럴 타입 (Integer literal types)
- 캡처된 타입 (Captured types)
- Kotlin 언어 명세: 타입 시스템
Kotlin에서 타입 검사와 캐스트(casts)를 수행하는 방법도 배워 보세요.