본문 바로가기

언어/Kotlin

[ 코틀린 / Kotlin ] 변수 사용하기

반응형

 

 

Kotlin에서 변수 선언은 Java와는 다소 다릅니다. Kotlin은 강력하고 유연한 변수 선언 방식을 제공하며, 주로 valvar 키워드를 사용합니다. 이 두 키워드는 변수의 불변성(immutable)과 가변성(mutable)을 구분하는 데 사용됩니다.

1. 변수 선언의 기본 형식

  1. Immutable Variables (val)
  2. Mutable Variables (var)
  3. 타입 추론 및 명시적 타입 지정

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에서 변수 선언은 valvar 키워드를 사용하여 이루어집니다. val은 불변 변수로 한 번 초기화된 후 값을 변경할 수 없으며, var는 가변 변수로 값을 변경할 수 있습니다. Kotlin의 타입 추론 덕분에, 변수의 타입을 명시적으로 지정하지 않아도 됩니다. 필요에 따라 lateinit을 사용하여 나중에 초기화할 수 있는 변수를 선언하거나, ?를 사용하여 null 값을 허용하는 변수를 선언할 수 있습니다. 이러한 기능은 Kotlin을 더 안전하고 간결하게 만들어 줍니다.

반응형