본문 바로가기

언어/Kotlin

[ 코틀린 / Kotlin ] 데이터 타입의 종류는 어떤 것이 있는 알아보자.

반응형

 

 

Kotlin에서는 다양한 데이터 타입을 제공하며, 이는 기본 데이터 타입(primitive types)과 더 복잡한 타입들을 포함합니다. Kotlin의 데이터 타입은 안전성, 간결성, 편의성을 중시하여 설계되었습니다. 아래에서 Kotlin에서 사용되는 주요 데이터 타입에 대해 자세히 알아보겠습니다.

1. 기본 데이터 타입 (Primitive Data Types)

Kotlin의 기본 데이터 타입은 Java의 기본 타입과 유사하지만, 모두 객체로 취급되기 때문에 null 안전성과 확장 함수 등을 지원할 수 있습니다. Kotlin은 다음과 같은 기본 데이터 타입을 제공합니다:

  1. 숫자 타입 (Numeric Types):
    • Byte: 8비트 정수 (Range: -128 to 127)
    • Short: 16비트 정수 (Range: -32,768 to 32,767)
    • Int: 32비트 정수 (Range: -2,147,483,648 to 2,147,483,647)
    • Long: 64비트 정수 (Range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
    • Float: 32비트 부동 소수점 수 (정밀도: 6-7 자리)
    • Double: 64비트 부동 소수점 수 (정밀도: 15-16 자리)
    • UByte, UShort, UInt, ULong: 부호 없는 정수 타입도 지원하며, 각각 Byte, Short, Int, Long의 부호 없는 버전입니다.
    val byteValue: Byte = 127
    val shortValue: Short = 32767
    val intValue: Int = 2147483647
    val longValue: Long = 9223372036854775807L
    val floatValue: Float = 3.14F
    val doubleValue: Double = 3.141592653589793
    val uByteValue: UByte = 255u
    val uIntValue: UInt = 4294967295u
  2. 문자 타입 (Character Type):
    • Char: 단일 문자를 나타내며, 작은 따옴표('')로 표현합니다. 숫자처럼 취급되지 않으며, 대신에 코드 포인트로 처리됩니다.
    val charValue: Char = 'A'
  3. 불리언 타입 (Boolean Type):
    • Boolean: 참(true) 또는 거짓(false)을 나타냅니다.
    val booleanValue: Boolean = true
  4. 문자열 타입 (String Type):
    • String: 문자열을 나타내며, 큰 따옴표("")로 표현합니다. Kotlin의 문자열은 불변(immutable)이며, 다양한 문자열 조작 함수를 제공합니다.
    • Kotlin은 또한 여러 줄의 문자열을 지원하는 삼중 따옴표 문자열(""" """)을 제공합니다.
    val stringValue: String = "Hello, Kotlin!"
    val multiLineString: String = """
        This is a
        multi-line string
        in Kotlin.
    """

2. 배열 타입 (Array Type)

  • Array: 동일한 타입의 값을 모아놓은 자료구조입니다. Kotlin에서는 Array를 통해 정적인 배열을 만들 수 있으며, 여러 가지 방법으로 초기화할 수 있습니다.
val intArray: Array<Int> = arrayOf(1, 2, 3, 4, 5)
val stringArray: Array<String> = arrayOf("Kotlin", "Java", "C++")
val mixedArray: Array<Any> = arrayOf(1, "Kotlin", true)

3. 컬렉션 타입 (Collection Types)

Kotlin은 다양한 컬렉션 타입을 제공하며, 이들은 크게 읽기 전용변경 가능한 컬렉션으로 나뉩니다.

  1. 리스트 (Lists):
    • List: 읽기 전용 리스트. 요소를 추가하거나 제거할 수 없습니다.
    • MutableList: 변경 가능한 리스트. 요소를 추가하거나 제거할 수 있습니다.
    val readOnlyList: List<String> = listOf("Kotlin", "Java", "C++")
    val mutableList: MutableList<String> = mutableListOf("Kotlin", "Java")
    mutableList.add("Python")  // 요소 추가
  2. 셋 (Sets):
    • Set: 읽기 전용 셋. 중복 요소를 허용하지 않습니다.
    • MutableSet: 변경 가능한 셋. 요소를 추가하거나 제거할 수 있습니다.
    val readOnlySet: Set<String> = setOf("Kotlin", "Java", "C++")
    val mutableSet: MutableSet<String> = mutableSetOf("Kotlin", "Java")
    mutableSet.add("Python")  // 요소 추가
  3. 맵 (Maps):
    • Map: 읽기 전용 맵. 키-값 쌍을 저장합니다.
    • MutableMap: 변경 가능한 맵. 키-값 쌍을 추가하거나 제거할 수 있습니다.
    val readOnlyMap: Map<String, Int> = mapOf("Kotlin" to 1, "Java" to 2)
    val mutableMap: MutableMap<String, Int> = mutableMapOf("Kotlin" to 1, "Java" to 2)
    mutableMap["Python"] = 3  // 키-값 쌍 추가

4. 널 가능 타입 (Nullable Types)

Kotlin에서는 변수가 null을 허용할 수 있는지 여부를 명시적으로 지정할 수 있습니다. 기본적으로, Kotlin의 변수는 null을 가질 수 없습니다. 그러나 ?를 사용하여 널 가능 타입을 선언할 수 있습니다.

val nonNullableString: String = "Hello, Kotlin"
// nonNullableString = null  // 컴파일 오류: 기본 타입은 null을 허용하지 않습니다.

val nullableString: String? = "Hello, Kotlin"
nullableString = null  // 올바르게 컴파일되고 실행됩니다.

5. Any, Unit, Nothing

  1. Any:
    • 모든 Kotlin 클래스의 기본 클래스입니다. Kotlin에서 모든 타입은 Any를 상속받습니다. Java의 Object에 해당합니다.
    val anyValue: Any = "This can be any type"
  2. Unit:
    • 반환 값이 없는 함수의 반환 타입으로 사용됩니다. Java의 void와 유사하지만 실제로는 객체입니다.
    fun printMessage(message: String): Unit {
        println(message)
    }
    
    // Unit 타입은 생략할 수 있습니다.
    fun printMessage(message: String) {
        println(message)
    }
  3. Nothing:
    • 정상적으로 값을 반환하지 않는 함수의 반환 타입으로 사용됩니다. 예를 들어, 예외를 던지는 함수에서 사용됩니다.
    fun fail(message: String): Nothing {
        throw IllegalArgumentException(message)
    }

6. 요약

Kotlin은 다양한 데이터 타입을 제공하며, 이는 간결하고 안전한 코드를 작성하는 데 도움이 됩니다. Kotlin의 기본 데이터 타입은 모두 객체로 다뤄지며, 널 안전성과 편리한 기능을 지원합니다. 또한, Kotlin은 리스트, 셋, 맵 등의 컬렉션 타입과 널 가능 타입을 지원하여 더욱 유연하고 강력한 프로그래밍을 가능하게 합니다. 이러한 데이터 타입을 잘 활용하면 Kotlin에서 효율적이고 유지보수 가능한 코드를 작성할 수 있습니다.

반응형