기본 타입
코틀린의 모든 변수와 데이터 구조에는 타입이 있습니다. 타입은 컴파일러에게 해당 변수나 데이터 구조로 무엇을 할 수 있는지, 즉 어떤 함수와 프로퍼티를 가지고 있는지 알려주기 때문에 중요합니다.
이전 장의 예제에서 코틀린은 customers가 Int 타입임을 식별할 수 있었습니다. 타입을 추론하는 코틀린의 이러한 능력을 타입 추론(type inference)이라고 합니다. customers에 정수 값이 할당되었기 때문에, 코틀린은 customers가 숫자 타입인 Int를 가진다고 추론합니다. 그 결과, 컴파일러는 customers를 사용하여 산술 연산을 수행할 수 있다는 것을 알게 됩니다.
fun main() {
var customers = 10
// 일부 고객이 대기열을 떠남
customers = 8
customers = customers + 3 // 덧셈 예시: 11
customers += 7 // 덧셈 예시: 18
customers -= 3 // 뺄셈 예시: 15
customers *= 2 // 곱셈 예시: 30
customers /= 3 // 나눗셈 예시: 10
println(customers) // 10
}
+=,-=,*=,/=,%=는 복합 대입 연산자(augmented assignment operators)입니다. 자세한 내용은 복합 대입(Augmented assignments)을 참조하세요.
코틀린에는 다음과 같은 기본 타입들이 있습니다.
| 카테고리 | 기본 타입 | 예시 코드 |
|---|---|---|
| 정수형 (Integers) | Byte, Short, Int, Long | val year: Int = 2020 |
| 부호 없는 정수형 (Unsigned integers) | UByte, UShort, UInt, ULong | val score: UInt = 100u |
| 부동 소수점 수 (Floating-point numbers) | Float, Double | val currentTemp: Float = 24.5f, val price: Double = 19.99 |
| 불리언 (Booleans) | Boolean | val isEnabled: Boolean = true |
| 문자 (Characters) | Char | val separator: Char = ',' |
| 문자열 (Strings) | String | val message: String = "Hello, world!" |
기본 타입과 그 속성에 대한 자세한 내용은 타입 개요(Types overview)를 참조하세요.
이러한 지식을 바탕으로 변수를 선언하고 나중에 초기화할 수 있습니다. 코틀린은 변수가 처음 읽히기 전에만 초기화된다면 이를 관리할 수 있습니다.
초기화하지 않고 변수를 선언하려면 :를 사용하여 타입을 지정하세요. 예를 들면 다음과 같습니다.
fun main() {
// 초기화 없이 변수 선언
val d: Int
// 변수 초기화
d = 3
// 타입을 명시적으로 지정하고 초기화한 변수
val e: String = "hello"
// 초기화되었으므로 변수를 읽을 수 있음
println(d) // 3
println(e) // hello
}변수를 읽기 전에 초기화하지 않으면 오류가 발생합니다.
fun main() {
// 초기화 없이 변수 선언
val d: Int
// 오류 발생
println(d)
// 변수 'd'는 반드시 초기화되어야 합니다.
}이제 기본 타입을 선언하는 방법을 알았으니, 컬렉션(collections)에 대해 알아볼 차례입니다.
연습 문제
연습 문제
각 변수에 대해 올바른 타입을 명시적으로 선언하세요.
fun main() {
val a: Int = 1000
val b = "log message"
val c = 3.14
val d = 100_000_000_000_000
val e = false
val f = '
'
}모범 답안
fun main() {
val a: Int = 1000
val b: String = "log message"
val c: Double = 3.14
val d: Long = 100_000_000_000_000
val e: Boolean = false
val f: Char = '
'
}