반응형
Kotlin에서 변수 선언은 Java와는 다소 다릅니다. Kotlin은 강력하고 유연한 변수 선언 방식을 제공하며, 주로 val
과 var
키워드를 사용합니다. 이 두 키워드는 변수의 불변성(immutable)과 가변성(mutable)을 구분하는 데 사용됩니다.
1. 변수 선언의 기본 형식
- Immutable Variables (
val
) - Mutable Variables (
var
) - 타입 추론 및 명시적 타입 지정
1. Immutable Variables (val
)
val
키워드는 불변 변수(immutable variable)를 선언하는 데 사용됩니다. 한 번 초기화된 후에는 값을 변경할 수 없습니다.- 이는 Java의
final
변수와 유사하지만, 더 간결하고 편리합니다.
예시:
val name: String = "John Doe"
name = "Jane Doe" // 컴파일 오류: val 변수는 변경할 수 없습니다.
val age = 30 // 타입을 명시적으로 지정하지 않아도 됩니다. 타입은 Int로 추론됩니다.
2. Mutable Variables (var
)
var
키워드는 가변 변수(mutable variable)를 선언하는 데 사용됩니다. 초기화된 후에도 값을 변경할 수 있습니다.- 이는 Java에서 일반적인 변수 선언과 유사합니다.
예시:
var name: String = "John Doe"
name = "Jane Doe" // 올바르게 컴파일되고 실행됩니다. var 변수는 변경할 수 있습니다.
var age = 30
age = 31 // 올바르게 컴파일되고 실행됩니다. 타입은 Int로 추론됩니다.
3. 타입 추론 및 명시적 타입 지정
- Kotlin은 타입 추론을 지원하므로, 변수 선언 시 타입을 명시적으로 지정할 필요가 없습니다. 그러나 필요에 따라 명시적으로 타입을 지정할 수도 있습니다.
- 타입 추론은 변수의 초기 값을 기반으로 변수의 타입을 결정합니다.
예시:
val name = "John Doe" // Kotlin은 타입을 String으로 추론합니다.
val age = 30 // Kotlin은 타입을 Int로 추론합니다.
var isStudent = true // Kotlin은 타입을 Boolean으로 추론합니다.
2. 지연 초기화 (Late Initialization)
lateinit
키워드를 사용하여 나중에 초기화할 수 있는 가변 변수를 선언할 수 있습니다. 이는 객체 또는 서비스와 같은 복잡한 변수를 나중에 초기화해야 하는 경우에 유용합니다.lateinit
은 기본 타입(예: Int, Boolean)에는 사용할 수 없습니다.
예시:
lateinit var name: String
fun initialize() {
name = "John Doe"
}
fun printName() {
if (::name.isInitialized) {
println(name)
} else {
println("Name is not initialized")
}
}
3. Read-only 및 Mutable Collections
Kotlin에서는 컬렉션 타입(리스트, 맵 등)을 선언할 때, 해당 컬렉션이 불변인지 가변인지를 결정할 수 있습니다.
- Read-only Collections: 불변의 컬렉션으로,
val
과 함께 사용하면 컬렉션의 참조는 변경할 수 없으며, 요소도 변경할 수 없습니다. - Mutable Collections: 가변의 컬렉션으로, 요소를 추가하거나 제거할 수 있습니다.
예시:
val readOnlyList = listOf(1, 2, 3) // 읽기 전용 리스트
// readOnlyList.add(4) // 컴파일 오류: 읽기 전용 리스트에 요소를 추가할 수 없습니다.
val mutableList = mutableListOf(1, 2, 3) // 가변 리스트
mutableList.add(4) // 올바르게 컴파일되고 실행됩니다. 리스트에 요소를 추가할 수 있습니다.
4. 기본 및 널 가능 타입 (Nullable Types)
Kotlin에서는 변수에 null 값을 할당할 수 있는지 여부를 명시적으로 선언할 수 있습니다.
- 기본적으로, Kotlin의 모든 변수는 null 값을 가질 수 없습니다.
- null 값을 허용하려면 변수 타입 뒤에
?
를 추가해야 합니다.
예시:
val name: String = "John Doe" // 기본 타입, null을 허용하지 않음
// name = null // 컴파일 오류: 기본 타입에 null 값을 할당할 수 없습니다.
val nullableName: String? = "Jane Doe" // 널 가능 타입
nullableName = null // 올바르게 컴파일되고 실행됩니다. 널 가능 타입에 null 값을 할당할 수 있습니다.
5. 요약
Kotlin에서 변수 선언은 val
과 var
키워드를 사용하여 이루어집니다. val
은 불변 변수로 한 번 초기화된 후 값을 변경할 수 없으며, var
는 가변 변수로 값을 변경할 수 있습니다. Kotlin의 타입 추론 덕분에, 변수의 타입을 명시적으로 지정하지 않아도 됩니다. 필요에 따라 lateinit
을 사용하여 나중에 초기화할 수 있는 변수를 선언하거나, ?
를 사용하여 null 값을 허용하는 변수를 선언할 수 있습니다. 이러한 기능은 Kotlin을 더 안전하고 간결하게 만들어 줍니다.
반응형
'언어 > Kotlin' 카테고리의 다른 글
[ Kotlin ] 따라하면서 컬렉션 데이터 타입에 대해서 이해하자. (1) | 2024.06.12 |
---|---|
[ Kotlin ] 데이터 타입의 종류는 어떤 것이 있는 알아보자. (0) | 2024.06.12 |
[ Kotlin ] Jetpack에서 지원하는 라이브러리 종류 (0) | 2024.06.12 |
[ Kotlin ] Jetpack을 사용하면 얻는 이점 (0) | 2024.06.12 |
[ Kotlin ] 코틀린에서 사용할 수 있는 구글 공식 라이브러리 종류 (0) | 2024.06.12 |