728x90
Kotlin은 현대적이고 효율적인 언어로, 정적 타입 언어의 장점을 살리면서도 유연성을 제공하는 강력한 타입 시스템을 갖추고 있습니다. 이러한 타입 시스템은 코드의 안정성과 가독성을 높여주며, 개발자가 버그를 사전에 방지하고 코드를 더욱 견고하게 작성할 수 있도록 도와줍니다. 이번에는 Kotlin에서 제공하는 다양한 데이터 타입을 알아보고, 각각의 특징과 사용 방법을 살펴보겠습니다.
1. 기본 데이터 타입:
- Kotlin은 다양한 기본 데이터 타입을 제공합니다. 각 타입은 특정한 종류의 값을 나타내며, 메모리에서 할당되는 크기도 다릅니다. Kotlin의 기본 데이터 타입은 다음과 같습니다:
- Boolean: true 또는 false 값을 나타내는 불리언 타입입니다.
- Byte: 8비트 정수 값을 나타내는 타입입니다.
- Short: 16비트 정수 값을 나타내는 타입입니다.
- Int: 32비트 정수 값을 나타내는 타입입니다.
- Long: 64비트 정수 값을 나타내는 타입입니다.
- Float: 32비트 부동소수점 값을 나타내는 타입입니다.
- Double: 64비트 부동소수점 값을 나타내는 타입입니다.
- Char: 16비트 유니코드 문자를 나타내는 타입입니다.
* 예제코드
fun main() {
val booleanValue: Boolean = true
val byteValue: Byte = 10
val shortValue: Short = 20
val intValue: Int = 30
val longValue: Long = 40L
val floatValue: Float = 3.14f
val doubleValue: Double = 3.1415
val charValue: Char = 'A'
println(booleanValue)
println(byteValue)
println(shortValue)
println(intValue)
println(longValue)
println(floatValue)
println(doubleValue)
println(charValue)
}
2. Nullable 데이터 타입:
- Kotlin은 기본적으로 null 안정성을 지원하여 Nullable 타입을 사용할 수 있습니다. 이는 변수가 null 값을 허용하는지 여부를 명시적으로 표현하는 데 도움이 됩니다. 변수에 null 값을 허용하려면 타입 이름 뒤에 ?를 추가하면 됩니다. 예를 들어, String?은 null 또는 문자열 값을 가질 수 있는 타입입니다. Nullable 타입을 사용하면 null 체크를 통해 예기치 않은 NullPointerException을 방지할 수 있습니다.
* 예제코드
fun main() {
val nullableString: String? = null
// Safe call operator(?.)을 사용하여 null 체크
val length: Int? = nullableString?.length
println(length)
}
3. 컬렉션 타입:
- Kotlin은 다양한 컬렉션 타입을 제공하여 데이터를 그룹화하고 조작할 수 있도록 합니다. 컬렉션 타입은 데이터의 추가, 삭제, 수정 등 다양한 작업을 수행할 수 있는 메서드와 속성을 제공합니다. Kotlin에서 주로 사용되는 컬렉션 타입은 다음과 같습니다:
- Array: 고정 크기의 배열을 나타내는 타입입니다.
- List: 수정할 수 없는 리스트를 나타내는 인터페이스입니다.
- MutableList: 수정 가능한 리스트를 나타내는 인터페이스입니다.
- Set: 중복되지 않는 요소를 가지는 집합을 나타내는 인터페이스입니다.
- MutableSet: 수정 가능한 집합을 나타내는 인터페이스입니다.
- Map: 키와 값의 쌍으로 이루어진 맵을 나타내는 인터페이스입니다.
- MutableMap: 수정 가능한 맵을 나타내는 인터페이스입니다.
* 예제코드
fun main() {
val numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)
val names: List<String> = listOf("John", "Jane", "Alice")
// for 문을 사용하여 배열 요소 출력
for (number in numbers) {
println(number)
}
// 인덱스와 함께 리스트 요소 출력
names.forEachIndexed { index, name ->
println("Name at index $index is $name")
}
}
3. 클래스와 객체 타입:
- Kotlin은 객체 지향 프로그래밍을 지원하기 위해 class 키워드를 제공합니다. 클래스는 객체를 생성하기 위한 템플릿이며, 멤버 변수와 메서드를 포함할 수 있습니다. Kotlin에서는 또한 싱글톤 객체를 생성하는 object 키워드도 제공합니다. 싱글톤 객체는 클래스의 단일 인스턴스를 생성하고 해당 인스턴스를 공유할 때 유용합니다.
- 사용자 정의 타입:
- Kotlin에서는 개발자가 필요에 따라 사용자 정의 타입을 정의할 수 있습니다. 두 가지 주요 사용자 정의 타입은 다음과 같습니다:
- enum class: 열거형 타입을 정의하는 클래스입니다. 사전에 정의된 상수 값을 가질 수 있으며, 주로 유한한 선택지를 표현하기 위해 사용됩니다.
- data class: 데이터를 보유하고 있는 클래스를 정의하는 키워드입니다. 데이터 클래스는 주로 데이터 저장 및 전달을 위해 사용되며, 컴파일러가 자동으로 일부 표준 메서드를 생성해줍니다.
* 예제코드
class Person(val name: String, val age: Int)
fun main() {
val person = Person("John Doe", 25)
// 객체의 속성에 접근하여 출력
println("Name: ${person.name}")
println("Age: ${person.age}")
}
object Singleton {
val instance: Singleton by lazy { Singleton() }
}
fun main() {
val singletonInstance = Singleton.instance
println(singletonInstance)
}
위의 예제 코드를 참고하시면 각 데이터 타입의 사용 방법을 더욱 잘 이해하실 수 있습니다. 필요에 따라 예제 코드를 수정하거나 확장하여 실제 프로젝트에서 활용해보시기 바랍니다.
728x90
댓글