프로그래밍 언어/Kotlin

[Kotlin 기초] 코틀린 문법 기초

ioh'sDeveloper 2025. 1. 5. 20:08

Kotlin 문법 기초 가이드

코틀린(Kotlin)은 현대적인 프로그래밍 언어로, 간결한 문법과 강력한 기능을 제공하여 Java의 대안으로 널리 사용되고 있습니다. JetBrains에서 개발한 코틀린은 Android 개발뿐만 아니라 백엔드 애플리케이션 개발에서도 큰 인기를 끌고 있습니다. 본 문서에서는 코틀린의 핵심 문법을 실무 중심으로 정리하고, 예제 코드를 통해 실용적인 활용 방법을 소개합니다.


1. 변수 선언 (Variables)

코틀린은 val과 var 키워드를 사용하여 변수를 선언합니다.

  • val : 불변 변수 (Immutable). 값을 변경할 수 없습니다.
  • var : 가변 변수 (Mutable). 값을 변경할 수 있습니다.
fun main() {
    val name: String = "임나현" // 불변 변수
    var age: Int = 28           // 가변 변수

    println("Name: $name, Age: $age")

    // age 값을 변경
    age = 29
    println("Updated Age: $age")
}

실무 팁:

  • 가능한 한 val을 사용하여 불변성을 유지하는 것이 권장됩니다. 이는 코드의 안정성과 가독성을 높이는 데 도움이 됩니다.

2. 함수 선언 (Functions)

코틀린에서 함수는 fun 키워드를 사용하여 선언합니다.

fun add(a: Int, b: Int): Int {
    return a + b
}

fun main() {
    val result = add(3, 5)
    println("Result: $result")
}

단일 표현식 함수:

코틀린에서는 단일 표현식 함수를 = 기호로 간결하게 표현할 수 있습니다.

fun multiply(a: Int, b: Int) = a * b

3. 조건문 (Conditional Statements)

코틀린의 조건문은 if와 when을 사용합니다.

if-else 문:

fun maxOf(a: Int, b: Int): Int {
    return if (a > b) a else b
}

when 문:

when은 Java의 switch 문을 대체하며 더욱 강력하고 유연한 문법을 제공합니다.

fun getGrade(score: Int): String {
    return when (score) {
        in 90..100 -> "A"
        in 80..89 -> "B"
        in 70..79 -> "C"
        else -> "F"
    }
}

4. 클래스와 객체 (Classes and Objects)

코틀린은 클래스 선언이 간결하며, constructor 키워드를 생략할 수 있습니다.

class Person(val name: String, var age: Int) {
    fun introduce() {
        println("Hello, my name is $name and I am $age years old.")
    }
}

fun main() {
    val person = Person("임나현", 28)
    person.introduce()
}

데이터 클래스 (Data Classes):

코틀린은 데이터 보관용 클래스를 간단히 만들 수 있도록 data class를 제공합니다.

data class User(val id: Int, val name: String)

fun main() {
    val user = User(1, "임나현")
    println(user)
}

5. 컬렉션 (Collections)

코틀린은 다양한 컬렉션 타입을 제공합니다: 리스트(List), 집합(Set), 맵(Map).

리스트:

val fruits = listOf("Apple", "Banana", "Cherry") // 불변 리스트
val mutableFruits = mutableListOf("Apple", "Banana") // 가변 리스트
mutableFruits.add("Cherry")

맵:

val userMap = mapOf(1 to "임나현", 2 to "김철수")
val mutableUserMap = mutableMapOf(1 to "임나현")
mutableUserMap[2] = "김철수"

6. Null 처리 (Null Safety)

코틀린은 NullPointerException(NPE)을 방지하기 위해 강력한 Null 안전성을 제공합니다.

Nullable 타입:

var name: String? = null

fun printLength(name: String?) {
    println(name?.length ?: "Name is null")
}

엘비스 연산자 (?:):

엘비스 연산자는 값이 null일 경우 기본값을 제공하는 데 사용됩니다.

val length = name?.length ?: 0

7. 확장 함수 (Extension Functions)

기존 클래스에 새로운 함수를 추가할 수 있는 확장 함수는 코틀린의 강력한 기능 중 하나입니다.

fun String.addPrefix(prefix: String): String {
    return "$prefix$this"
}

fun main() {
    val name = "나현"
    println(name.addPrefix("임"))
}

결론

코틀린은 간결하고 안전한 문법을 제공하여 개발자의 생산성을 높이고 코드 품질을 향상시킵니다. 본 가이드에서는 코틀린의 핵심 문법을 소개하였으며, 이를 실무 프로젝트에 적용하여 더 나은 코드 품질을 유지할 수 있습니다. 앞으로 코틀린의 심화 기능과 Best Practice도 지속적으로 학습하여 적용해 나가는 것이 중요합니다.