Language

Kotlin 기본 문법(1)

JohnnyDeveloper 2024. 6. 13. 14:14

1. 변수 선언: var 대 val

Kotlin에서는 var 또는 val 키워드를 사용하여 변수를 선언합니다. 둘 사이의 선택은 선언하는 변수의 변경 가능성에 따라 달라집니다.

  • var(변경 가능한 변수): var로 변수를 선언하면 변수의 값이 초기 할당 후에 변경될 수 있음을 나타냅니다.
var name = "John Doe"
name = "Jane Doe" // This is allowed.
  • val(불변 변수): 반대로 val은 읽기 전용 변수를 선언하는 데 사용됩니다. 즉, 해당 값은 초기화되면 다시 할당할 수 없습니다. 이는 Java에서 최종 변수를 선언하는 것과 유사합니다.
val pi = 3.14
pi = 1.59 // This will result in a compilation error.

가능할 때마다 'val'을 사용하는 것이 더 안전하고 예측 가능한 코드로 이어지므로 좋은 습관입니다.

2. Kotlin의 기본 유형

Java와 달리 Kotlin에는 기본 유형에 대한 별도의 카테고리가 없습니다. Int, Double, Float 등과 같은 숫자 유형은 객체로 표시됩니다. 그러나 Kotlin 컴파일러는 추가 오버헤드가 발생하지 않도록 런타임에 기본 유형을 사용하도록 코드를 최적화합니다.

val myInt: Int = 10
val myDouble: Double = 3.14
val myFloat: Float = 3.14f
val myLong: Long = 100L
val myShort: Short = 10
val myByte: Byte = 1

이 원활한 추상화를 통해 개발자는 성능에 대한 걱정 없이 숫자 유형을 기본 유형인 것처럼 작업할 수 있습니다.

3. Kotlin의 Null 허용 변수

Kotlin의 주요 기능 중 하나는 null 안전성입니다. Kotlin의 변수는 기본적으로 null을 허용하지 않습니다. 즉, null 값을 보유할 수 없습니다. null 허용 변수를 선언하려면 유형 뒤에 '?'를 명시적으로 표시해야 합니다.

var name: String = "John Doe" // Non-nullable String variable
var nullableName: String? = null // Nullable String variable

Kotlin은 null 허용 객체의 속성이나 메서드에 액세스할 수 있는 안전한 호출 연산자(?.)를 제공하여 무서운 NullPointerException을 방지하는 데 도움이 됩니다.

println(nullableName?.length) // Safe call, prints null if nullableName is null

4. Kotlin의 객체 인스턴스화

Kotlin에서 객체를 인스턴스화하는 것은 간단하며 Java에서 사용되는 'new' 키워드가 필요하지 않습니다. 간단히 클래스의 생성자를 호출하면 됩니다.

class Person(val name: String)

val person = Person("John Doe")

싱글톤 패턴의 경우 Kotlin은 '객체' 선언이라는 고유한 기능을 제공합니다. 이를 통해 애플리케이션 전체에서 클래스의 인스턴스가 하나만 있도록 보장합니다.

object DataManager {
    fun loadData() {
        // Implementation
    }
}

이를 사용하려면 간단히 이름으로 참조하면 됩니다.

DataManager.loadData()

5. 요약

  • 모든 변수는 var / val을 붙여 주어야 한다.
  • var : 변경 가능하다 / val : 변경 불가능하다 (read-only)
  • 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.
  • Primitive Type과 Reference Type을 구분하지 않아도 된다.
  • Null이 들어갈 수 있는 변수는 타입 뒤에 ? 를 붙여주어야 한다.
  • 아예 다른 타입으로 간주된다.
  • 객체를 인스턴스화 할 때 new를 붙이지 않아야 한다.