최재영의 개발 일지
GitHubLinkedIn

데이터 타입

Kotlin1분 읽기

코틀린의 특징

코틀린도 자바와 마찬가지로 정적 타입 언어이다. 모든 변수와 표현식의 타입이 컴파일 시점에 결정된다.

  • 모든 것이 객체: 자바와 달리 코틀린에서는 원시 타입과 래퍼 타입의 구분이 없다. 모든 변수는 메서드를 가진 객체이다.
  • null 안정성: null 참조로 인한 오류를 방지한다.
  • 타입 추론: 대부분의 경우 변수 타입을 명시할 필요가 없다.

숫자 타입

타입크기(byte)범위
Byte1-128 ~ 127
Short2-32,768 ~ 32,767
Int4-2,147,483,648 ~ 2,147,483,647
Long8-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float4약 ±3.40282347E+38F
double8약 ±1.7976931348623157E+308

정수는 기본적으로 Int로 추론한다. 실수는 기본적으로 Double로 추론한다. 접미사로 L을 붙여 Long을 명시하고, f를 붙여 Float를 명시한다.

코틀린에서는 자바의 원시 타입에 해당하는 값들도 전부 객체로 관리한다. 그리고 컴파일러가 적절한 순간에 객체를 원시 타입으로 변환하여 사용한다.

문자 타입

타입크기(byte)범위
Char20 ~ 65,535 (유니코드 문자)

문자 리터럴은 작은따옴표(')로 표현한다.

자바에서는 char가 숫자로 자동 변환되지만, 코틀린에서는 숫지와 직접 연산할 수 없다.

불리언 타입

타입크기(byte)범위
Boolean1true / false

문자열 타입

문자열은 String 타입으로 나타낸다. 문자열 리터럴은 큰따옴표(")로 표현한다. 코틀린의 문자열은 불변이다.

  • 문자열 템플릿: 문자열 내에서 $variable 또는 ${expression}을 사용할 수 있다.
  • 여러 줄 문자열: 큰따옴표 3개(""")를 사용한다.
  • ==equals(): ==는 값 비교(자바의 equals())이고, ===는 참조 비교(자바의 ==)이다.

배열

배열은 Array 타입으로 나타낸다. Array 클래스는 자바의 배열보다 더 많은 기능을 제공한다.

IntArray, ByteArray 등은 자바의 원시 타입 배열에 해당하고, 박싱 오버헤드가 없다.

Null 안정성

자바에서는 모든 참조 타입이 null을 값으로 가질 수 있지만, 코틀린에서는 명시적으로 nullable로 선언된 타입만 null을 값으로 가질 수 있다. 이는 자바에서 @Nullable@NotNull로 표현하던 것을 타입 시스템에 내장한 것이다.